首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

数据库优化(一)-Schema设计的性能优化

2012-07-19 
数据库优化(1)---Schema设计的性能优化模式设计的根本方案:1.避免过多Join,较小重复开销;2.减小空间,降低

数据库优化(1)---Schema设计的性能优化

模式设计的根本方案:

1.避免过多Join,较小重复开销;

2.减小空间,降低表扫描IO;

3.保证索引被及Query Cache被充分利用

总之,根据实际数据库访问需求,在三者之间寻找平衡,到达效率最优的目的。

?

高效的模型设计:

1.适度冗余,让Query减少Join。查询频率远远大于插于更新频率的时候,维护冗余数据一致性带来的性能开销对于查询提高的效率来说,是可以忍受的。通过少部分操作的成本换来更大(更频繁操作)的性能收获,是性能优化总经常使用的策略。Join几个表影响数据库优化执行计划。

2.大字段垂直分拆,summary表优化。分离大字段,通过单独的表存放,在我们访问数据库的收获大大降低了IO访问,从而使性能得到极大的改善。选择冗余和大字段分拆必须根据操作类型的分布来判定。只要满足相对访问频率低,就可分离出去。另外由于分离的大字段和原表记录是——对应的关系,因此Join的时候,性能影响也不是非常大。

3.大表水平分拆——基于类型的分拆优化。表数据空间很大,部分数据访问频率很高,与其他记录没有关联交互,记录量比普通记录少很多,这种情况,考虑将这部分的数据单独放在表中,避免普通记录的大量访问导致该部分数据的Query Cache失效。

4.统计表,准实时优化。将实时的统计需求,转化为定时任务,平衡实际需求和性能开销。

?

?

优化数据类型主要包括两个方面:

1.选用小数据类型,减少存储空间,降低查询数据IO;

2.合理数据类型加速数据的比较

?

数据类型:

类型存储长度(字节)最小值(无符号)最大值(有符号)整型数字TINYINT1-2^7(0)2^7-1(2^8)SMALLINT2-2^15(0)2^15-1(2^16)MEDIUMINT3-2^23(0)2^23-1(2^24)INT4-2^31(0)2^31-1(2^32)BIGINT8-2^63(0)2^63-1(2^64)小数支持FLOAT4 or 8DOUBLE8时间类型DATETIME81001-01-01 00:00:009999-12-31 23:59:59DATE31001-01-019999-12-31TIME300:00:0023:59:59YEAR110019999TIMESTAMP41970-01-01 00:00:00字符存储类型(字符为单位,字符所占字节由具体的存储字节决定 , 设字符所在字节为定值 X)CHAR(M)M*XX255*X(不一定,GBK510字节)VARCHAR(M)M*X+1或者 M*X+21255字符 或者 65535字节

TINYTEXT、TEXT、

MEDIUMTEXT、LONGTEXT

————动态存储长度,+ 存放字符长度的空间其他类型BIT(M)(M+7)/8字节1(64+7)/8ENUM('v1','v2'...)1~21取决于存储数目,最大65536个值,枚举索引两个字节

热点排行