美文网首页
MySQL 数据库对象优化

MySQL 数据库对象优化

作者: 代码的搬运工 | 来源:发表于2019-11-18 11:50 被阅读0次

1、优化表的数据类型

表需要使用何种数据类型是需要根据应用来判断的。虽然应用设计的时候需要考虑字段的长度留一定的冗余,但是不推荐让很多字段都留有大量的冗余,这种既浪费磁盘存储空间,同时在应用程序操作时也浪费物理内存。

在MySQL中,可以使用函数PROCEDURE ANALYSE()对当前应用的表进行分析,该函数可以对数据表中列的数据类型提出优化建议,用户可以根据应用的实际情况酌情考虑是否实施优化。

2、通过拆分提高表的访问效率

(1)第一种方法是垂直拆分,即把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。

(2)第二种方法是水平拆分,即根据一列或多列数据的值把数据行放到两个独立的表中。

3、逆规范化

常用的逆规范技术有增加冗余列、增加派生列、重新组表和分割表。

(1)增加冗余列:指在多个表中具有相同的列,它常用来在查询时避免连接操作。

(2)增加派生列:指增加的列来自其他表中的数据、由其他表中的数据经过计算生成,增加的派生列作用是在查询时减少连接操作,避免使用集函数。

(3)重新组表:指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

(4)分割表:可以参见上一节内容。

另外,逆规范技术需要维护数据的完整性。无论使用何种逆规范技术,都需要一定的管理来维护数据的完整性。常用的方法是批处理维护、应用逻辑和触发器。

(1)批处理维护是指对冗余列或派生列的修改积累一定的时间后,运行一批处理作业或存储过程对冗余列或派生列进行修改,这只能在对实时性要求不高的情况下使用。

(2)数据的完整性也可由应用逻辑来实现,这就要求必须在同一个事务中对所有涉及的表进行增、删、改操作。用应用逻辑来实现数据的完整性风险较大,因为同一逻辑必须在所有的应用中使用和维护,容易遗漏,特别是在需求变化时,不易于维护。

(3)另一种方式是使用触发器,对数据的任何修改立即触发对冗余列或派生列的相应修改,触发器是实时的,而且相应的处理逻辑只在一个地方出现,易于维护,一般来说,是解决这类问题比较好的办法。

4、使用中间表提高统计查询速度

对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是否会对在线的应用产生负面影响。通常在这种情况下,使用中间表可以提高统计查询的效率。

相关文章

  • MySQL数据库与SQL优化

    一、MySQL数据库 - SQL优化 MySQL DBMS - MySQL Database Management...

  • MySQL-性能优化-优化设计和设计原则

    MySQL-性能优化-优化设计和设计原则 MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给...

  • MySQL 数据库对象优化

    1、优化表的数据类型 表需要使用何种数据类型是需要根据应用来判断的。虽然应用设计的时候需要考虑字段的长度留一定的冗...

  • MySQL5:性能优化

    性能优化 优化MySQL数据库是数据库管理员和数据库开发人员的必备技能。MySQL优化,一方面是找出系统的瓶颈,提...

  • SQL审核优化建议

    SQL审核优化建议 数据库类型 MySQL:RDS MySQL、PolarDB MySQL、MariaDB、Pol...

  • 数据库存储原理特性索引优化

    说一下mysql数据库存储的原理? 事务的特性? 数据库索引 数据库怎么优化查询效率? 数据库优化方案 优化索引、...

  • MySQL优化

    概述 MySQL优化分为三部分优化: MySQL服务器和配置优化 数据库设计和结构优化 查询优化(重点) MySQ...

  • mysql性能与优化

    数据库结构优化 数据库结构设计 mysql复制

  • MySQL书目

    MySQL数据库索引设计与优化 MySQL技术内幕 MySQL排错指南 高性能MySQL MySQL DBA修炼之道

  • zabbix4.0 之mysql优化(Zabbix分区表)

    zabbix最大的瓶颈不在zabbix服务,而是mysql数据库的压力上,优化mysql其实就是优化zabbix的...

网友评论

      本文标题:MySQL 数据库对象优化

      本文链接:https://www.haomeiwen.com/subject/ckdvictx.html