[英]partitioning by key regular ( not linear ) hashing function
我們有一個按鍵分區的表(二進制(16))
是否有任何選項可以計算 go 在 MySQL 之外的哪個分區記錄? hash function(不是線性的)是什么?
原因是將MySQL之外的CSV文件排序,並用LOAD DATA INFILE將它們並行插入到正確的分區中,然后也並行索引。
我在 MySQL 文檔中找不到 function
你有多少索引? 如果只有 hash,對表進行排序,然后加載到一個非分區的 InnoDB 中,PK 已經到位。 同時,確保每一列都使用盡可能小的數據類型。 你有多少內存?
如果您使用的是 MyISAM,請考慮MERGE
- 這樣,您可以在單獨的線程中加載每個類似分區的表。 完成后,構造合並它們的“合並”表。
您將使用什么類型的查詢? BINARY(16)
的單行查找? 其他任何東西都可能有很大的性能問題。
多少內存? 我們需要調整key_buffer_size
或innodb_buffer_pool_size
。
請注意限制。 MyISAM 默認為 7 字節數據指針和 6 字節索引指針。 如果行是DYNAMIC
的(字節指針),則 15TB 只需要一個 6 字節的數據指針;如果行是FIXED
的(行號),則需要 5 個字節。 這樣可以節省 1 或 2 個字節。 如果有什么是可變長度的,go 和 Dynamic; 修復 go 會浪費太多空間(而且可能不會提高速度)。 我不知道在你的情況下索引指針可以縮小。
你在5.7? MySQL; 8.0 移除了 MyISAM。 同時,MariaDB 仍然處理 MyISAM。
你會先按“分區”拆分數據嗎? 或者將INSERTs
一個一個發送到不同的“分區”。 (這個選擇增加了一些皺紋和可能的優化。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.