我们正在使用MySQL 5.5 InnoDB 引擎来管理我们的数据库,其中一个同样具有SELECT / INSERT操作的表将具有 100-1.5亿个插入操作每天。 我已经阅读过有关MySQL Partitioning的内容,并且正在计划实施,但在我实施之前,我很乐意接受思考。那么,在不影响用户响应时间的情况下,处理此类挑战的最佳方法是什么?
答案 0 :(得分:1)
首先,确保主键是自动递增的,因为它是InnoDB表的聚类索引。这意味着如果它是自动递增,则插入是仅附加操作,如果不是 - 它是随机写入,这是主要的性能杀手。确保PK很小,并且没有不必要的索引。如果可能,批量插入,因为更新索引是插入操作的很大一部分。
确保其他I / O设置有意义,例如数据实际刷新到磁盘的频率;您可以将二进制日志文件放在SSD上,以确保尽可能快地写入。
毕竟这一切;将读取与写入与主从服务器分开是很常见的,因此插入查询中的峰值不会影响数据的读取(假设可以读取可能过时的数据)