• MySQL数据优化


    1. 数据类型优化

    1. 更小的通常更好。占用更小的磁盘、内存和cpu缓存
    2. 简单就好。整型比字符串操作代价更低,因为字符集和校对规则字符串比整型更复杂;使用mysql自建类型而不是字符串存储日期
    3. 尽量避免null。查询中包含null的列,对mysql来说很难优化。
      • https://www.cnblogs.com/balfish/p/7905100.html
      • NULL值到非NULL的更新无法做到原地更新,更容易发生索引分裂,从而影响性能。
      • NOT IN、!= 等负向条件查询在有 NULL 值的情况下返回永远为空结果,查询容易出错

    1.1 实际细则

    1.1.1 整数类型

    TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT分别使用8,16,24,32,64位存储空间。 (一个字节是8位)

    1.1.2 字符串类型
    1. varchar(根据内容实际长度保存数据)
      • varchar(n) n小于等于255使用额外一个字节保存长度,n>255使用额外两个字节保存长度。
      • varchar(5)与varchar(255)保存同样的内容,硬盘存储空间相同,但内存空间占用不同,是指定的大小(比如将行从存储引擎层复制到SQL层时,VARCHAR将转换字段CHAR以获得利用固定宽度行的优势。因此,内存中的字符串将填充到声明的VARCHAR列的最大长度)
    2. 使用场景
      • 字符串更新少的,每次更新都要重新计算,使用额外的空间保存长度
      • 保存多字节字符,如汉子,特殊字符等
      • 存储长度波动大的数据
    1.1.3 字符类型
    1. 最大长度255
    2. 自动删除掉末尾空格
    3. 检索效率、写效率比varchar高,以空间换时间
    4. 场景
      • 存储长度波动不大
      • 存储短字符串,经常更新的字符串
    1.1.4 datetime类型(不推荐使用,暂用空间大,日期函数也不能用)
    1. 占用8个字节
    2. 与时区无关,数据库底层时区配置对datetime无效
    3. 可保存到毫秒;可保存的范围大,
    1.1.5 timestamp类型
    1. 占用4个字节
    2. 时间范围:1970-01-01到2038-01-19
    3. 精确到秒
    4. 采用整型存储
    5. 依赖时区设置(自动更新timestamp的值)
    1.1.6 date类型
    1. 占用3个字节
    2. 可以是日期函数
    3. 保存1000-01-01到9999-12-31之间的日期
    1.1.7 枚举类型

    有时可以使用枚举类代替常用的字符串类型,mysql存储枚举类型会非常紧凑,会根据列表值的数据压缩到一个或两个字节中,
    mysql在内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存“数字-字符串”映射关系的查找表
    备注:添加新值需要重新构建整个表,这可能需要花费数小时,具体取决于表的大小

  • 相关阅读:
    C++ Reference: Standard C++ Library reference: Containers: array: array
    Torch学习(一)
    美国空军发布类ChatGPT产品—NIPRGPT
    Servlet---API详解
    中小企业怎么实现数字化转型?有什么实用的工单管理系统?
    【Unity3D】UI Toolkit样式选择器
    Unity丨移动相机朝向目标并确定目标在摄像机可视范围内丨摄像机注释模型丨摄像机移动丨不同尺寸模型优化丨
    基于android的旅游信息查询系统APP(ssm+uinapp+Mysql)
    第六章 块为结构建模 P1|系统建模语言SysML实用指南学习
    国产蓝牙耳机哪个好用?好用的国产蓝牙耳机推荐
  • 原文地址:https://blog.csdn.net/sbl19940819/article/details/126030349