MySql InnoDB 可能的性能问题
Posted
技术标签:
【中文标题】MySql InnoDB 可能的性能问题【英文标题】:MySql InnoDB possible performance issues 【发布时间】:2016-10-25 09:42:49 【问题描述】:我是数据库新手,所以我有什么:
一个表 ~75GB。 (InnoDB) 10GB 的索引。 高流量在几个廉价的选择查询之后,我对这个巨大的表进行了插入查询和其他选择。
问题:每次插入都会重新索引,它可能会锁定表/行或什么?当同时有多个请求时,它会如何影响高流量?
【问题讨论】:
【参考方案1】:索引以增量方式更新。无需考虑这个过程;它发生在“背景”中。索引始终是最新的;也就是说,SELECT
将能够像找到旧行一样容易地找到新插入的行。
如果您每秒获得超过 100 个INSERTs
,让我们来看看细节。 (SHOW CREATE TABLE
,实际INSERT
等)
同时,一千个点查询应该没问题。 (即被索引的单行的SELECT
。)
高流量...“廉价查询”通常非常快,以至于很少有两个同时运行。即使每秒一千个查询也可能很少同时运行多个查询。长时间运行的查询是另一回事。
几十个主动运行的连接是“重”流量。此时,让我们看看运行时间最长的查询,看看我们是否可以加快它们的速度。
根据 RAM 大小和innodb_buffer_pool_size
以及访问模式,您的大表可能或可能不受 I/O 限制。 UUID/GUID 索引因导致 I/O 迟缓而臭名昭著。您主要查看“最近”行的“日志”或“新闻”将具有“参考位置”,这会导致非常有效的缓存 - 因此表大小与 RAM 无关。
【讨论】:
以上是关于MySql InnoDB 可能的性能问题的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL innodb_deadlock_detect 打开数据库性能低,与事务回滚
单个大数据文件与每个表多个数据文件的 Innodb 的 MySql 性能