mysql - 数据库建模故障排除

标签 mysql database database-design

您好,我最近遇到了一种情况,我被要求为我们的一个客户优化数据模型,因为该客户已经开发并正在运行产品。进行此练习的主要原因是,该产品由于太多而导致性能缓慢锁和太多运行缓慢的查询。由于我不是 DBA,查看数据模型的第一个站点并进行一些查询跟踪,我意识到整个数据模型因设计和存储不当而受到影响。数据库 MySQl 5.6,我们正在其上运行 InnoDB 引擎。

我想知道是否有任何工具可以分析整个数据模型并可以指出可能的问题,包括数据结构定义、索引和其他东西? 我尝试了很多分析工具,包括 Mysql Workbench、Mysql Enterprise Monitor(付费版)、jet profiler,但它们似乎都仅限于识别慢速查询。我对一个可以分析现有数据模型并报告其问题以及可能的解决方案的工具感兴趣

最佳答案

您不能孤立地看待数据模型。您需要考虑数据模型以及需求和实际的数据访问/更新模式。

我建议您确定前 X 个最慢的查询并执行根本原因分析。 确保您专注于应用程序中重要的部分,例如对应用程序的实用性产生负面影响的性能问题。

通过数据访问/更新模式,我的意思是:

  • 并发访问率高与低
  • 主要是阅读或更新?
  • 单个记录读取与一次读取大量记录
  • 白天均匀分布访问,或在特定时间批量访问
  • 随机访问(每条记录都可能被选择或更新)与大多数最近的记录
  • 所有表格的使用率是否相同,还是有些表格的使用率高于其他表格
  • 是否一次读取所有表的所有列?或者是否存在一起使用的列簇?
  • 哪些表经常一起使用?

关于mysql - 数据库建模故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21250058/

相关文章:

MySQL - 我可以查询某些行或列占用了多少磁盘空间吗?

mysql - 将多行压缩为一个摘要行

database-design - 创建物化 View 或新表哪个更好?

php - 使唯一键与 NULL 值一起使用?

database - 两个表,每个表都有一个引用另一个的外键

mysql - 在 Varchar 上创建 MySQL 索引总是会产生 2 个索引?

mysql - 如何在数据库中实现自定义字段

mysql - 删除超过半小时或 1800 秒的 MySql 记录?

mysql - 将 table2 中每个元素的值添加到 table1 中,并使用 table1 中的 MAX(id) + 1 作为 table2 id

mysql - 远程连接到 clearDB heroku 数据库