mysql 第15天 优化数据库对象

优化数据库对象

优化表的数据结构

在 MySQL 中,可以使用函数 PROCEDURE ANALYSE()对当前应用的表进行分析

SELECT * FROM tbl_name PROCEDURE ANALYSE();
SELECT * FROM tbl_name PROCEDURE ANALYSE(16,256);


通过拆分提高表的访问效率
针对 MyISAM 类型的表进行,那么有两种拆分方法

 第一种方法是垂直拆分,即把主码和一些列放到一个表,然后把主码和另外的列放
到另一个表中。
如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直拆分,另外垂直
拆分可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少 I/O 次
数。其缺点是需要管理冗余列,查询所有数据需要联合(JOIN)操作。
 第二种方法是水平拆分,即根据一列或多列数据的值把数据行放到两个独立的表中。
水平拆分通常在以下几种情况下使用:

1 表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了
索引的层数,提高查询速度。

2 表中的数据本来就有独立性

3 需要把数据存放到多个介质上

水平拆分会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需
要 UNION 操作。在许多数据库应用中,这种复杂性会超过它带来的优点,因为只要
索引关键字不大,则在索引用于查询时,表中增加 2 至 3 倍数据量,查询时也就增加
读一个索引层的磁盘次数,所以水平拆分要考虑数据量的增长速度,根据实际情况决
定是否需要对表进行水平拆分。


逆规范化
规范化越高,那么产生的关系就越多,
关系过多的直接结果就是导致表之间的连接操作越频繁,而表之间的连接操作是性能
较低的操作,直接影响到查询的速度,所以对于查询较多的应用就需要根据实际情况
运用逆规范化对数据进行设计,通过逆规范化来提高查询的性能

在进行反规范操作之前,要充分考虑数据的存取需求、常用表的大小、一些特殊
的计算(例如合计)、数据的物理存储位置等

增加冗余列    增加派生列  重新组表  分割表

批处理维护、应用逻辑和触发器来管理维护数据的完整性


使用中间表提高统计查询速度
中间表在统计查询中经常会用到,其优点如下:
 中间表复制源表部分数据,并且与源表相“隔离”,在中间表上做统计查询不
会对在线应用产生负面影响。
 中间表上可以灵活的添加索引或增加临时用的新字段,从而达到提高统计查询
效率和辅助统计查询作用。

小结
本章介绍了对数据库对象的优化,数据库对象设计的好坏是一个数据库设计的基础,而且一
旦数据库对象设计完毕并投入使用,将来再进行修改就比较麻烦,因此在进行数据库设计的
时候一定要尽可能地考虑周到。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值