数据库优化(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 8
DOUBLE8
时间类型
DATETIME81001-01-01 00:00:009999-12-31 23:59:59
DATE31001-01-019999-12-31
TIME300:00:0023:59:59
YEAR110019999
TIMESTAMP41970-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)/8
ENUM('v1','v2'...)1~21取决于存储数目,最大65536个值,枚举索引两个字节
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值