在SQL Server上缓慢插入语句

时间:2017-09-04 12:00:21

标签: mysql sql database database-administration

单个插入语句有时会超过2秒。插入可能是并发的,因为它取决于我们的站点流量,每分钟可能导致200次插入。

该表有超过150M行,4个索引,可以使用简单的select语句进行访问以进行报告。

显示来自ouptut的指数 SHOW INDEX FROM output

如果需要所有索引,如何加速插入?

1 个答案:

答案 0 :(得分:1)

您还没有提供很多细节,但似乎您需要分区。

数据库索引中的插入操作通常具有O(logN)时间复杂度,其中N是表中的行数。如果你的桌子真的很大,那么logN可能会变得太多。

因此,为了解决该可伸缩性问题,您可以使用索引分区以较小的内部部分透明地分割表索引,并在不更改应用程序或SQL脚本的情况下减少N.

https://dev.mysql.com/doc/refman/5.7/en/partitioning-overview.html

[编辑]

考虑最初在评论中添加的信息,现在在问题本身中更新。

  • 每分钟可能并发插入200次
  • 4个索引
  • 1选择报告用途

有一些不相互排斥的改进:

或者,更改您的方法:将数据保存到像redis这样的nosql数据库,并异步填充mysql表以进行报告。