加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.zhandada.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Schema与数据类型优化的案例

发布时间:2022-02-18 14:38:39 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下Schema与数据类型优化的示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 4.2MySQL schema设计中的陷阱 1、太多的列 MySQL存储引擎api工作时需要在服务器层和存储引擎层通过行缓冲格式拷贝数据,然后在服务器层将缓
       小编给大家分享一下Schema与数据类型优化的示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
 
       4.2MySQL schema设计中的陷阱
1、太多的列
       MySQL存储引擎api工作时需要在服务器层和存储引擎层通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列,从行缓冲中将编码过的列转换成行数据的操作代价高,myisam定长行与服务器行结构正好匹配,不需要转换;但是变长行结构 InnoDB的行结构总是需要转换,转换代价依赖于列的数量。
 
2、太多的关联
      实体-属性-值EAV:糟糕的设计模式,mysql限制了每个关联操作最多只能有61张表,但EAV数据库需许多自关联;一个粗略的经验法则,如果希望查询执行得快速且并发性好,单个查询最好在12个表内做关联;
 
3、 非此发明not invent here的null
建议存空值可以用0、特殊值、空字符串代替,尽量不要null;但是不要走极端,在某些场景下、使用null会更好:
 
create table ……(
//全0 (不可能的日期)会导致很多问题
    dt datetime not null default '0000-00-00 00:00:00'
    ……

MySQL会在索引中存储null值,Oracle不会
 
4.3范式与反范式
4.3.1优缺点
1、范式化的更新操作更快
 
2、当数据较好地范式化时,很少有重复数据,只需要修改更少的数据
 
3、范式化的表更小,可更好地放到内存里,执行操作更快
 
4、很少冗余数据,检索列表数据时更少需要distinct、group by语句
 
缺点:
 
需要关联,有代价且可能使索引无效
 
4.3.2反范式的优点和缺点
避免关联,数据比内存大可能比关联要快很多(避免了随机I/O)
 
4.4缓存表和汇总表
缓存表:
 
对优化搜索和检索查询语句很有效,
 
存储那些可以较简单地从其他表获取数据(每次获取速度比较慢)的表
 
汇总表:保存使用group by语句聚合数据的表
 
使用时决定是实时维护数据还是定期重建,定期重建:节省资源、碎片少、顺序组织的索引(高效)
 
重建时,保证数据在操作时依然可用,通过“影子表”来实现,影子表:一张在真实表背后创建的表,在完成建表操作后,可通过原子的重命名操作切换影子表和原表。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读