用户7962184
高性能MySQL第四章 读书笔记
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
用户7962184
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
高性能MySQL第四章 读书笔记
高性能MySQL第四章 读书笔记
用户7962184
关注
发布于 2020-11-20 14:59:10
524
0
发布于 2020-11-20 14:59:10
举报
文章被收录于专栏:
没事多喝水
第4章 Schema与数据类型优化
数据类型的设定原则应该遵循更小的往往更好,越简单越好(如能用data就用data而不用字符串),尽量避免NULL。
如果数据允许NULL,对MySQL来说更难优化,因为可为NULL的列使得索引,索引统计,和值比较都比较复杂。
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,8,16,24,32,64位整数,还有可选的UNSIGNED属性,只保存无属性的值。
MySQL可以为整数类型指定宽度,但是对大多数应用这是没有意义的,他不会限制值的合法范围,只是规定一些交互工具显示字符的个数。
FLOAT和DOUBLE类型是使用标准的浮点运算进行近似计算。DECIMAL用于存储精确小数,计算过程由MySQL自己实现。
VARCHAR需要使用1或者2个额外字节记录字符串的长度。InnoDB还会将过长的VARCHAR储存成BLOB。
CHAR在存储的时候,如果存储时后面有空格,查询的时候会被空格剔除掉,因为CHAR填充空白也是用的空格。
如果使用VARCHAR(5)和VARCHAR(200)存储’hello‘,空间开销是一样的,但是,更长的列会消耗更多的内存,因为MySQL会分配固定大小的内存块来保存内部值。
MySQL会吧BLOB和TEXT当做一个单独的对象处理,如果他们太大,会使用专门的“外部”存储区域来存储,因此每个值需要1~4个字节存储一个指针。而他们仅有的区别就是TEXT有字符集和排序规则,而BLOB没有。
用枚举代替有限制的字符串,枚举类型在排序的结果中,是按内部的整数存储去排序的。
要确保关联表之间的列的数据类型是一致的。
完全随机的字符串会导致INSERT和一些SELECT语句变慢,因为会写到索引的不同位置,导致页分裂,磁盘随机访问。随机值也会让缓存赖以生存的访问局部性原理失效。
MySQL服务器层从存储引擎获取数据之后是需要解码成行数据结构的,如果列特别多,那时候CPU占用就会很高,转化的代价就非常大。
合理运用范式和反范式(允许冗余),缓存表和汇总表来优化查询和业务。
如果是用到一个统计的计数器表,可以增加多几列数据,来增加行表的使用效果。再对生成的数据进行一个汇总。统计到其中一列数据中去。
重申一遍,字段的数据结构尽可能用小而简单的,总是好的。
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
数据库
云数据库 SQL Server
sql
存储
编程算法
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
数据库
云数据库 SQL Server
sql
存储
编程算法
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
第4章 Schema与数据类型优化
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
产品介绍
产品文档
云数据库采购特惠,高性能、高可靠、高安全,超值优惠等你享!
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐