我对这家基于商业的商店有意见。商店在后台(cron)每小时更新一次他的库存和价格(大约每分钟500个产品),在这个更新过程中,select查询的速度会减慢(ttfb从300ms增加到1900ms)。我在专用服务器(4核xeon+16gb ram)上使用带innodb引擎的mysql。我的问题是,在更新过程中如何提高select查询的速度?也许我应该为每一个产品使用一个大的更新查询,而不是大量的单个查询?或者在这种情况下有其他的方法来调整mysql服务器?谢谢你的帮助,马金
dgiusagp1#
如果您的表大小足够大,以至于在进行更新时阻塞mysql,那么这是意料之中的。在mysql中更新大量记录时,将重新索引更新的元组。通过innodb获得行级锁,但是如果select需要使用任何正在重建过程中的索引。可能会引起一些麻烦。如果您的查询允许,您可以在单行上进行选择。批量更新而不是连续更新。打开慢查询日志,观察慢查询是因为没有使用锁等待或索引。这将帮助你缩小你的问题范围
1条答案
按热度按时间dgiusagp1#
如果您的表大小足够大,以至于在进行更新时阻塞mysql,那么这是意料之中的。在mysql中更新大量记录时,将重新索引更新的元组。
通过innodb获得行级锁,但是如果select需要使用任何正在重建过程中的索引。可能会引起一些麻烦。
如果您的查询允许,您可以在单行上进行选择。批量更新而不是连续更新。
打开慢查询日志,观察慢查询是因为没有使用锁等待或索引。这将帮助你缩小你的问题范围