[英]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是相同的區域,根據您的工作而有所不同)。
如果您使用的是JDBC或ODBC,請確保使用批處理sql 。 只要您使用的是Vertica的JDBC或ODBC驅動程序,它將在后台將批處理SQL轉換為更有效的COPY語句。 Vertica確實不是數以百萬計的語句真正擅長的東西,但是在批量方面卻非常擅長。
如果不使用JDBC或ODBC(vsql,vertica_python模塊或其他),則需要流式傳輸到COPY FROM STDIN
或COPY LOCAL
語句。 執行此操作的方法取決於您實際使用的連接方法。
如果使用序列,則將緩存設置為高非常重要。 每個未緩存的序列拉取都是一個目錄鎖。 這肯定會大大降低您的插入速度。 如果使用了標識列或auto_number,則可以在sequences
視圖中查找幕后關聯序列。 執行類似ALTER SEQUENCE
sequence_name CACHE 100000;
。
期待序列中的缺口。 無論是否使用緩存,這實際上都可能發生,但是幾乎可以保證使用緩存來獲取它們。
我將再添加一個:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.