gpt4 book ai didi

MySQL InnoDB : Index Locks - Advice Needed

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:40 26 4
gpt4 key购买 nike

我有一个应用程序正在向我的 mySQL 数据库发送函数调用。发送后,该函数会执行所需的操作(包括单行选择、按索引插入和更新)。

现在我每天可以执行大约一百万次 mySQL 调用。这些 mySQL 函数调用被分解为我的应用程序的实际“调用”,可以是 1 到 20 个不同的 mySQL 函数调用。我的应用每天收到大约 120,000 次“应用功能调用”。

我有 12 GB 的 RAM,所以我将 InnoDB 内存中的 RAM 从 2 GB 增加到 8 GB,但似乎并没有增加。接下来我想,如果 1 个线程得到那么多,添加线程会增加它。所以我这样做了,现在我看到了成吨的索引锁错误。

我知道 MySQL 要求简单地重新发送请求,这是有效的,但我没有看到速度有多大提高。无论线程如何,我基本上最多可以进行 180,000 次“应用程序函数调用”,而单线程大约为 120,000 次。这是因为一旦我有大约 2-3 个线程,它就会不断出现线程锁定错误。

现在我的每个表都有大量索引以提高搜索效率,因为我有数百万行。但是,我计划复制此数据库,以便新实例在 SLAVE 上执行大部分搜索,而主要数据在我的 MASTER 上维护(这是所有更新/插入)。因此,我在想,除了主键和唯一键之外,也许删除 MASTER 上的所有索引会降低这个?然后我可以在 SLAVE 上添加索引。但是,如果索引不同,我什至不确定这是否可以使用 mySQL 的基本 REPLICATION 功能,因为这是我第一次尝试使用它。

关于我应该如何做以使其更有效的任何建议。现在,MySQL 在给定的一天内处理了我需要它处理的大约 1/20。

感谢任何反馈。

最佳答案

您需要分析您的查询,以确保它们尽可能高效。使用内置的执行计划描述过程(EXPLAIN,或 MySQL 管理控制台中的执行计划可视化工具)帮助您找出查询陷入困境的位置。

在硬件解决方案方面,如果您不完全在内存中执行,请考虑将您的磁盘升级为 SSD;它们提供的吞吐量可能非常显着(例如,IOPS 比 rotating rust 高 2 个数量级)。

关于MySQL InnoDB : Index Locks - Advice Needed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6738646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com