我有多进程脚本将〜30k字节数据插入mysql myisam表(id,timestamp,data)。 一开始一切都很快,但过了一会儿(约20-30秒),插入时间从几毫秒增加到1-2秒。
我注意到那个时候MySQL正在将数据写入磁盘,之后我再次获得了良好的性能。我尝试将批量插入缓冲区大小设置为不同的值,但没有效果。
有没有办法强制MySQL更频繁地编写,但批量较小? 或者还有另一种方法可以将插入速度保持在一个水平上吗?
答案 0 :(得分:1)
试试这个:
LOCK TABLE table
(Do all your inserts)
UNLOCK TABLE table
由于索引,它可能很慢。以上将强制MySQL在重建索引之前添加所有数据。
此外,您可以编辑/etc/my.ini设置,以便为MySQL提供更多RAM,因为它在构建索引时似乎正在写入磁盘。
或者作弊是将MySQL tmp目录更改为RAM驱动器。然后它会写入内存,即使它认为它正在写入磁盘。