源數據保持爲持續變得越來越大的字段投擲值。現在我正在使用VARCHAR(200),但我可能會去VARCHAR(400)
。使用大數字有什麼不利嗎?在Redshift中創建大型VARCHAR值有缺點嗎?
回答
你是什麼意思「下行」?如果不使列的大小足夠大,那麼存在一個非常大的缺點 - 您無法使用它來存儲要在其中存儲的值。
至於額外的開銷,你不必擔心。一個varchar()
類型基本上只佔用該值所需的存儲空間,另外還有一個小長度的開銷。另外,「400」不是那麼大的數字,特別是與「200」相比時。
因此,如果您需要400個字節來存儲該值,請更改表以存儲它。改變值的長度可能會有開銷。我不確定RedShift是否會因爲類型改變而感到需要複製數據。但是,對性能的影響應該可以忽略不計。
不要爲了方便而使用最大列大小。
取而代之的是,考慮一下您可能存儲在VARCHAR列中的最大值,並相應地調整列的大小。由於Amazon Redshift非常有效地壓縮列數據,因此創建比所需大得多的列對數據表大小的影響最小。但是,在處理複雜查詢期間,中間查詢結果可能需要存儲在臨時表中。由於臨時表未進行壓縮,因此不必要的大型列會佔用過多的內存和臨時磁盤空間,這會影響查詢性能。
http://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-smallest-column-size.html
。 。該文檔沒有意義。 'VARCHAR()'僅爲正在存儲的值使用空間,外加固定的少量開銷(http://docs.aws.amazon.com/redshift/latest/dg/r_Character_types.html)。無論值是否未壓縮,RedShift都不應該將填充的varchar值長於實際長度。 –
那麼這些文檔是由數據庫維護人員編寫的,所以我想這是有原因的。更重要的是,我已經測試過它,它有助於改善。如果我不得不猜測,我懷疑在查詢處理時,當列被「重新實現」爲行時,數據庫會爲潛在的巨大列分配額外的RAM。 –
- 1. 在表中使用VARCHAR(MAX)有缺點嗎?
- 2. 爲varchar或varbinary選擇大MAX值的缺點
- 3. 在對象內部創建原型方法有什麼缺點?
- 4. PHP中session.auto_start有缺點嗎?
- 5. SQLite的VARCHAR缺省大小
- 6. PostgreSQL:大型wal_keep_segments的缺點?
- 7. 我可以在RedShift中創建快速插入臨時表嗎?
- 8. jQuery圓角創建的額外標記有什麼缺點嗎?
- 9. 是否有創建大量短壽命線程的缺點?
- 10. 在Redshift中創建文件夾
- 11. 如何在Redshift中創建行號?
- 12. 如何在Redshift中創建日期表?
- 13. VARCHAR(最大值),2008年爲varchar在2000
- 14. Redshift:在INSERT上自動截斷VARCHAR值或可能使用最大長度?
- 15. AWS Redshift:如何將varchar(7)YYYY/MM中的數據有效地轉換爲Redshift中的日期類型?
- 16. 在Perl中插值有什麼缺點嗎?
- 17. ConcurrentHashMap有什麼缺點嗎?
- 18. varchar的最大值
- 19. 在Amazon Redshift中創建現有數據庫副本的方法
- 20. 創建TensorFlow佔位符可變大小還是固定大小輸入有什麼缺點嗎?
- 21. 在MySQL中爲varchar選擇一個大值會有什麼危害嗎?
- 22. 可以在事件採購中創建大型活動嗎?
- 23. 有大量的Drupal區域有缺點嗎?
- 24. MariaDB不會創建具有較大VARCHAR的表作爲PRIMARY KEY
- 25. 如何在列表DDL中創建VARCHAR?
- 26. 在Python中創建大型數組
- 27. VAR類型的大LIMIT的缺點
- 28. 在動態創建的varchar數組中找到值C++
- 29. Redshift加入varchar(40)和2.3億行
- 30. varchar和int mysql數據類型的缺省值
我只是假設,以爲會有額外的開銷來分配的空間變化量爲字段 – simplycoding