MySQL |海量数据插入

MySQL |海量数据插入,mysql,partitioning,database-partitioning,Mysql,Partitioning,Database Partitioning,我们正在使用MySQL 5.5InnoDB引擎来管理我们的数据库,其中一个具有相同选择/插入操作的表每天将具有1-1.5亿次插入操作。 我已经读过关于MySQL分区的书,并计划实施,但在实施之前,我想先考虑一下。那么,在不影响用户响应时间的情况下,处理此类挑战的最佳方法是什么呢?首先,确保主键是auto increment,因为它是InnoDB表的集群索引。这意味着,如果它是自动递增的,则插入是仅附加操作,如果不是,则插入是随机写入,这是主要的性能杀手。确保PK很小,并且没有不必要的索引。如果可

我们正在使用MySQL 5.5InnoDB引擎来管理我们的数据库,其中一个具有相同选择/插入操作的表每天将具有1-1.5亿次插入操作。
我已经读过关于MySQL分区的书,并计划实施,但在实施之前,我想先考虑一下。那么,在不影响用户响应时间的情况下,处理此类挑战的最佳方法是什么呢?

首先,确保主键是auto increment,因为它是InnoDB表的集群索引。这意味着,如果它是自动递增的,则插入是仅附加操作,如果不是,则插入是随机写入,这是主要的性能杀手。确保PK很小,并且没有不必要的索引。如果可能,批量插入,因为更新索引是插入操作的主要部分

确保其他I/O设置有意义,例如数据实际刷新到磁盘的频率;您可以将二进制日志文件放在SSD上,以确保尽快写入


在这一切之后;使用主从服务器将读写分离是很常见的,因此插入查询中的峰值不会影响数据的读取(假设可以读取可能过时的数据)

首先,确保主键是auto increment,因为它是InnoDB表的群集索引。这意味着,如果它是自动递增的,则插入是仅附加操作,如果不是,则插入是随机写入,这是主要的性能杀手。确保PK很小,并且没有不必要的索引。如果可能,批量插入,因为更新索引是插入操作的主要部分

确保其他I/O设置有意义,例如数据实际刷新到磁盘的频率;您可以将二进制日志文件放在SSD上,以确保尽快写入

在这一切之后;使用主从服务器将读写分离是很常见的,所以插入查询中的峰值不会影响数据的读取(假设可以读取可能过时的数据)