簡體   English   中英

插入vertica性能調整

[英]Insert into in vertica performance tuning

我是vertica的新手。 我編寫了一個簡單的Insert into語句,但是執行一百萬條記錄需要花費數小時。

喜歡:

insert into abc(a,b,c)
select x,y,z from xyz
where x > 20;

無論如何,有沒有改善性能的方法? 目標表已到位。

提前致謝!!

根據有限的信息,我將為您提供兩個方面的研究內容(1和2是相同的區域,根據您的工作而有所不同)。

  1. 如果您使用的是JDBC或ODBC,請確保使用批處理sql 只要您使用的是Vertica的JDBC或ODBC驅動程序,它將在后台將批處理SQL轉換為更有效的COPY語句。 Vertica確實不是數以百萬計的語句真正擅長的東西,但是在批量方面卻非常擅長。

  2. 如果不使用JDBC或ODBC(vsql,vertica_python模塊或其他),則需要流式傳輸到COPY FROM STDINCOPY LOCAL語句。 執行此操作的方法取決於您實際使用的連接方法。

  3. 如果使用序列,則將緩存設置為高非常重要。 每個未緩存的序列拉取都是一個目錄鎖。 這肯定會大大降低您的插入速度。 如果使用了標識列或auto_number,則可以在sequences視圖中查找幕后關聯序列。 執行類似ALTER SEQUENCE sequence_name CACHE 100000;

期待序列中的缺口。 無論是否使用緩存,這實際上都可能發生,但是幾乎可以保證使用緩存來獲取它們。

我將再添加一個:

  1. 如果可能,請嘗試使源和目標的分段相同,以避免在專用網絡上廣播數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM