我已经在Linux机器(768MB RAM)上安装了MySQL 5.1倍实例。我恢复了约1000行,通过我的.NET应用程序(部署在不同的Windows Web服务器),我进行了一定的读操作,其中,考虑到表中没有索引时,是快速的。备份

我然后清除从这些行中的服务器和在我的web应用程序所使用的其他服务器上的特征中插入行(基本上,我读文本关闭一个文本文件,将数据输入的自定义类的字段,然后调用存储过程与这些参数对每个记录)。当我有网站和数据库都在我的本地机器上,我会立刻插入2500行(小于一秒)。然而现在,在“生产”的环境中,这些相同的2500行需要10分钟才能插入。我使用的是自带的MySQL安装默认的my.cnf。

有没有什么办法可以优化写入操作不影响读取操作的速度?还是我失去了一些东西明显?

提前感谢!

有帮助吗?

解决方案

你有没有看着插入速度MySQL手册页的?我想到的,我的第一个猜测是,你是不是包装的一套2500个程序中的开始事务/提交语句,所以MySQL是autocommitting 2500次的动作中的每一个。

其他提示

除了马克(自动提交替代交易)中提到的问题,我肯定会调查使用批量更新。因为本地连接和网络连接(即使是非常快的一个)之间的一个主要区别是往返时间。

虽然带宽是最有可能不是限制因素在这种情况下,做2500个网络往返到数据库和背部肯定会需要很长时间的网络不是本地机器上。

使用批处理更新可以减少那些插入到单个往返理想地,只是在实践中几个人。

不幸的是,我不能告诉你怎么做的.NET世界的批量更新,在Java中你会使用的 PreparedStatement.addBatch() 。我敢肯定有一个在.NET类似的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top