gpt4 book ai didi

MySQL 分区 : Simultaneous insertion to different partitions performance

转载 作者:行者123 更新时间:2023-11-29 07:08:39 26 4
gpt4 key购买 nike

我有一个分区的 InnoDB mysql 表,我需要插入数亿行。

我目前正在使用 LOAD DATA INFILE 命令将许多(想想数千个).csv 文件加载到所述表中。

如果我同时将大块数据插入不同的不同分区,会对性能产生什么影响?

我可能会受益于运行多个进程,每个进程运行一批 LOAD DATA INFILE 语句吗?


杂项信息:

硬件:Intel i7、24GB 内存、Ubuntu 10.04 w/MySQL 5.5.11、Raid 1 存储

freenode IRC 上的#mysql 告诉我性能影响将与普通 InnoDB 或 MyISAM 相同 - InnoDB 将执行行级锁定而 MyISAM 将执行表级锁定。

表结构:

CREATE TABLE `my_table` (
`short_name` varchar(10) NOT NULL,
`specific_info` varchar(20) NOT NULL,
`date_of_inquiry` datetime DEFAULT NULL,
`price_paid` decimal(8,2) DEFAULT NULL,
`details` varchar(255) DEFAULT '',
UNIQUE KEY `unique_record` (`short_name`,`specific_info`,`date_of_inquiry`),
KEY `short_name` (`short_name`),
KEY `underlying_quotedate` (`short_name`,`date_of_inquiry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50500 PARTITION BY LIST COLUMNS(short_name)*/
(PARTITION pTOYS_R_US VALUES IN ('TOYS-R-US') ENGINE = InnoDB,
PARTITION pZAPPOS VALUES IN ('ZAPPOS') ENGINE = InnoDB,
PARTITION pDC VALUES IN ('DC') ENGINE = InnoDB,
PARTITION pGUCCI VALUES IN ('GUCCI') ENGINE = InnoDB,
...on and on...
);

最佳答案

不是完整列表,但有一些提示...

插入行的最快方法是使用LOAD DATA INFILE
请参阅:http://dev.mysql.com/doc/refman/5.1/en/load-data.html

如果这不是一个选项,并且您想加快速度,则需要找到瓶颈并针对它进行优化。
如果分区跨网络,网络流量可能会杀死你同样的 CPU、磁盘 I/O 和内存,只有分析一个样本才能知道。

禁用 key 更新
如果您无法执行load data infile,请确保禁用 key 更新

ALTER TABLE table1 DISABLE KEYS
... lots of inserts
ALTER TABLE table1 ENABLE KEYS

请注意,禁用 key 更新 仅禁用非唯一 key ,唯一 key 始终更新。

二进制日志
如果你有二进制日志运行,这将记录所有这些插入,考虑禁​​用它,你可以通过使用符号链接(symbolic link)并在运行期间将其指向 /dev/null 来禁用它批量插入。
如果您希望二进制日志持续存在,您可以同时插入到启用了 blackhole 表和二进制日志的并行数据库。

自增键
如果让 MySQL 计算自动增量 key ,这将围绕 key 生成产生争用。考虑向 MySQL 提供一个预先计算的自动递增主键值而不是 NULL

唯一键
每次插入时都会检查唯一键(为了唯一性),这会占用很多时间。因为 MySQL 需要在每次插入时对该索引进行全扫描。
如果您知道您插入的值是唯一的,最好放弃该要求并在完成后添加它。
当您将它添加回 MySQL 时将花费大量时间进行检查,但至少它只会执行一次,而不是在每次插入时都执行。

关于MySQL 分区 : Simultaneous insertion to different partitions performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com