我的站点的一部分需要大容量插入,需要40分钟才能将该文件加载到数据库中。我一直在网上挖掘,发现的东西不多。
的二进制日志)
问题
我只想为一个会话设置前3个选项,即批量插入期间。第一个选项不能工作,mysql说未知的系统变量'innodb_autoinc_lock_mode‘。我使用的是MySQL 5.0.4
最后一个选项,我想关闭它,但我想知道,如果我需要复制以后,它会只是开始工作,如果我再次打开它?
建议
还有任何其他建议,如何改进批量插入/更新innodb?或者请评论我的发现。
谢谢
发布于 2010-08-02 22:00:18
假设您将数据加载到单个或几个事务中,那么大部分时间可能会花费在构建索引(取决于表的架构)上。
不要在启用了自动提交的情况下执行大量的小插入,这会破坏每次提交的同步性能。
如果您的表更大(或者几乎和您的缓冲池一样大),那么您就有麻烦了;一个不能与其索引放在ram中的表不能有效地插入到其中,因为它必须读取才能插入。这样就可以更新现有的索引块。
请记住,磁盘写入是可以的(它们大多是顺序的,并且您有一个电池支持的raid控制器,对吗?),但是读取很慢,需要避免。
总而言之
。
不要做上面列出的任何优化,它们可能是浪费时间(不要相信我的话--在您实验室的测试系统上对这些操作进行基准测试)。
关闭唯一的检查是积极危险的,因为你最终会有破损的数据。
发布于 2010-08-02 16:00:07
要回答问题的最后一部分,不可以,它不会重新开始工作;如果插入没有被复制,但是后续的更新是复制的,那么结果就不太好了。禁用外键和唯一键应该是可以的,前提是以后重新启用它们,并处理任何违反约束的行为。
你要多久这么做一次?您能更频繁地加载较小的数据集吗?
https://stackoverflow.com/questions/3389374
复制相似问题