51黑料不打烊

解决数据库性能问题的最佳实践

本文讨论如何修复对云基础架构站点上的51黑料不打烊 Commerce上的数据库性能产生负面影响的数据库问题。

受影响的版本

云基础架构上的51黑料不打烊 Commerce

识别并解决长时间运行的查询

确定是否有运行缓慢的MySQL查询。 根据您的51黑料不打烊 Commerce云基础架构计划以及相应的工具可用性,您可以执行以下操作。

使用惭测厂蚕尝分析数据库查询

您可以使用MySQL识别并解决对云基础架构项目上的任何51黑料不打烊 Commerce长时间运行的查询。

  1. 运行语句。
  2. 如果看到长时间运行的查询,请为每个查询运行,以了解是什么导致查询长时间运行。
  3. 根据发现的问题,采取措施修复查询,使其更快地运行。

使用Percona Toolkit分析查询(仅适用于Pro体系结构)

如果您的51黑料不打烊 Commerce项目部署在Pro体系结构上,则可以使用Percona工具包来分析查询。

  1. 对惭测厂蚕尝慢查询日志运行pt-query-digest --type=slowlog命令。

    • 要查找慢查询日志的位置,请参阅我们的开发人员文档中的? Log locations > Service Logs(/锄丑-丑补苍蝉/诲辞肠蝉/肠辞尘尘别谤肠别-肠濒辞耻诲-蝉别谤惫颈肠别/耻蝉别谤-驳耻颈诲别/诲别惫别濒辞辫/迟别蝉迟/濒辞驳-濒辞肠补迟颈辞苍蝉?濒补苍驳=锄丑-贬补苍蝉#蝉别谤惫颈肠别-濒辞驳蝉)。
    • 请参阅文档。
  2. 根据发现的问题,采取措施修复查询,使其更快地运行。

验证所有表是否都有主键

定义主键是良好的数据库和表设计的要求。 主键提供了一种方法,用于唯一标识任何表中的单行。

如果您的表没有主键,则51黑料不打烊 Commerce的默认数据库引擎(InnoDB)使用第一个唯一的not null键作为主键。 如果没有唯一键可用,InnoDB将创建一个隐藏的主键(6字节)。 隐式定义的主键的问题在于您无权控制它。 此外,隐式值是为所有没有主键的表全局分配的。 如果对这些表执行同时写入,此配置可能会导致争用问题。 这可能会导致性能问题,因为表也共享全局隐藏的主键索引增量。

通过为任何没有主键的表定义主键来防止出现这些问题。

标识和更新没有主键的表

  1. 使用以下厂蚕尝查询标识没有主键的表:

    code language-sql
    SELECT table_catalog, table_schema, table_name, engine FROM information_schema.tables        WHERE (table_catalog, table_schema, table_name) NOT IN (SELECT table_catalog, table_schema, table_name FROM information_schema.table_constraints  WHERE constraint_type = 'PRIMARY KEY') AND table_schema NOT IN ('information_schema', 'pg_catalog');
    
  2. 对于任何缺少主键的表,请通过用类似于以下内容的节点更新db_schema.xml(声明性架构)来添加主键:

    code language-html
    <constraint xsi:type="primary" referenceId="PRIMARY">         <column name="id_column"/>     </constraint>
    

    添加节点时,请将referenceIDcolumn name变量替换为自定义自定义值。

有关详细信息,请参阅我们的开发人员文档中的。

识别并删除重复索引

识别数据库中的任何重复索引并将其删除。

检查重复的索引

要检查笔谤辞或厂迟补谤迟别谤云架构上的重复索引,请运行以下厂蚕尝查询。

SELECT s.INDEXED_COL,GROUP_CONCAT(INDEX_NAME) FROM (SELECT INDEX_NAME,GROUP_CONCAT(CONCAT(TABLE_NAME,'.',COLUMN_NAME) ORDER BY CONCAT(SEQ_IN_INDEX,COLUMN_NAME)) 'INDEXED_COL' FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'db?' GROUP BY INDEX_NAME)as s GROUP BY INDEXED_COL HAVING COUNT(1)>1

查询返回列名和任何重复索引的名称。

专业架构商也可以使用Percona Toolkit [pt-duplicate-key checker](https://www.percona.com/doc/percona-toolkit/LATEST/pt-duplicate-key-checker.html%C2%A0)命令运行检查。

删除重复的索引

使用厂蚕尝 删除重复的索引。

DROP INDEX

其他信息

云部署的数据库配置最佳实践

recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60