选择数据库

时间:2016-02-16 09:17:41

标签: mysql database hibernate database-design

目前我们正在使用MySQL版本5.1.72数据库。它不是集群数据库,而是常规集群数据库。 64位(“mysql Ver 14.14 Distrib 5.1.72,sun-solaris2.11(x86_64)使用readline 6.3”)我们使用的是专用服务器,而不是冗余云解决方案。我经历过,我们挤进平台的客户越多,我们遇到的问题就越多

2016-02-15 13:26:36,737 WARN [org.hibernate.util.JDBCExceptionReporter] - <SQL Error: 1205, SQLState: 41000>
2016-02-15 13:26:36,737 ERROR [org.hibernate.util.JDBCExceptionReporter] - <Lock wait timeout exceeded; try restarting transaction>
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not insert: [com.marin.core.server.model.TableName]

可以切换到另一个数据库帮助我们吗?或者只是MySQL的集群版本?有些表中有数百万行。最大的表大小约为5 GB。它有很多指数。

1 个答案:

答案 0 :(得分:0)

通常这种问题是由

引起的
  • 索引不足。通常这是因为索引单列并且未能使用&#34;复合&#34;索引更有利。
  • 庞大的数据导致额外的I / O(这是任何查询的缓慢部分)。这可以通过更仔细地选择数据类型和/或规范化来解决。
  • 效率低下的查询 - 某些结构已知效率低下,可以重新配置以提高性能。

建议您设置long_query_time=1并启用slowlog。然后等一天,运行mysqldumpslow -s tpt-query-digest,找出运行时间长的内容。 (注意:特定超时通常表现为几乎完全耗费50秒的查询。)

然后,让我们查看查询和SHOW CREATE TABLE,修复它们,并教育您的用户如何避免重复此问题。