我有实时更改数据(大约40 000条记录),我需要每隔5分钟抓取并插入MySQL表格。我无法跟踪数据源的某些更改,因此我正在制作“TRUNCATE TABLE ...;”,然后批量插入“INSERT INTO(...,...,...)”。所有40k行。
但是,在截断表和在表中插入新数据之间存在短暂的延迟。因此,我的表空了,我的网站没有显示数据的时间很短。
有没有办法优化这个过程?我读过关于INSERT DELAYED的内容,但它只与MyISAM一起使用,而我正在将InnoDB用于我的桌子。
答案 0 :(得分:1)
更好的选择是将数据插入新表,然后在单个命令中重命名(交换)两个表。重命名操作以原子方式完成,这意味着在重命名运行时没有其他会话可以访问任何表,请参阅http://dev.mysql.com/doc/refman/5.6/en/rename-table.html