![]() |
1
0
我们需要对系统有更多的了解,才能判断这是否正常,或者如何解决问题。
我会说,这使它非常小-所以如果它表现不好,那么你就会在某个地方严重出错。 允许查询日志查看正在运行的查询,并根据频率和持续时间的乘积确定优先级。看看解释计划,创建一些索引。考虑将数据库拆分为多个磁盘。 高温高压 C. |
![]() |
2
4
你在使用什么引擎mysql?这里需要注意的是,如果您使用的是myisam,那么由于引擎使用的表锁定,您将遇到锁定问题。
我不会在这里重复它们,但是这个页面有一些关于在MySQL中增加表并发性的提示。显然,有一种选择是改为像innodb这样的引擎,它有一个更复杂的行锁定机制,对于高并发性的表来说,这会对性能产生巨大的影响。有关InnoDB的更多信息,请访问 here . 在更改引擎之前,尽管有必要查看其他提示,例如确保表索引正确等,因为这将提高选择和更新性能,而不管存储引擎如何。 根据用户注释编辑: 我想说,根据你描述的症状,这是一种可能的解决方案,但可能不是 那会让你到达你想去的地方。没有更多的信息是不可能说的。 由于缺少索引,您可能正在进行完整的表扫描。这可能导致I/O争用 在您的磁盘上,这进一步加剧了myisam使用的表锁。如果是这样的话 原因的根源是错误的索引和纠正,这将是你最好的行动方案。 更换存储引擎之前。 另外,确保您的表是规范化的。这可能对性能产生深远影响。 尤其是更新。规范化表允许您更新一行而不是数百行,或者 在一个非标准化的表中有数千个。这是因为值不重复。它还可以节省大量资金 选择的I/O,因为数据库可以更有效地缓存数据块。不知道的结构 您使用的表或所呈现的索引很难为您提供 更详细的答复。 用户尝试使用innodb后编辑: 您提到Java进程是多线程的。您是否尝试使用单个线程运行该进程?我想知道是否可能是您发送相同的行以更新到多个线程和/或跨线程更新的方式导致了锁定问题。 除此之外,我将检查以下内容:
|