zoukankan      html  css  js  c++  java
  • 第五件:mysql优化原则

    计算机的优化方式:空间换时间,时间换空间
    mysql性能优化
    写在前面的话:一次只改变一个设置!这是测试改变是否有益的唯一方法
    一、表的优化
    1、定长与变长分离<把变长字段放一张表,用主键与核心表关联起来>
        定长:  id int,占4个字节;
            char(4),占4个字符长度;
            time
        变长:    varchar,text,blob
    2、常用字段和不常用字段分离<结合网站具体的业务来分析>
    3、在1对多,需要关联统计的字段上,添加冗余字段<反范式,占用更多的空间换来效率的提升>
    二、列的优化
    1、字段类型优先级 整型 > date,time > enum,char > varchar > blob,text
        整型     tinyint ,1个字节<255>
            int ,4个字节
        
        time    定长
        
        enum     约束值,内部转换成数字<整型>,若与char类型联查内部要经历串与值得转换
        char    定长,考虑字符集和校对集<排序规则>
        
        varchar 不定长,考虑字符集和校对集<排序规则> 以及字符集的转换

        blob/text 无法使用内存临时表(排序等操作只能在磁盘上进行)
    2、尽量少用null,不利于索引
    三、索引- btree索引<树>、hash索引<一对一>
        btree作用:提高查询速度、分组速度、排序速度
        btree用途:联合索引,满足左前缀要求
        Myisam<用的非聚簇索引> 和 InnoDB<用的是聚簇索引> 引擎都是用的 btree索引
        
        innodb 的主索引文件上 直接存放该行数据,次索引指向主键的引用
        myisam中 主索引和次索引,都指向物理行(磁盘位置)

        注意:innodb中 主索引无 primary key,则 unique ,都无则系统内部生成一个 rowid作为主索引

    生活就要逢山开路遇水搭桥,愿共勉!
  • 相关阅读:
    【Web技术】561- 网站性能优化之度量篇
    【拓展】什么是Deno?跟Node.js有何区别?
    【Web技术】560- 一个简洁、有趣的无限下拉方案
    【Web技术】559- 一文带你彻底搞懂跨域
    【TS】558- 5000 多字,让你一文掌握 TS 枚举
    【拓展】你真的会写 Markdown 么?
    【调试】557- 11 个Chrome骚技巧让你为所欲为
    ios 地图
    ios 7 20像素解决
    保存图片到相册
  • 原文地址:https://www.cnblogs.com/TianMu/p/7595837.html
Copyright © 2011-2022 走看看