高性能mysql(一)优化数据类型
2015-09-24 16:43
369 查看
良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema,这往往要权衡各种因素。
一,选择优化的数据类型:
更小的通常更好,简单就好,尽量避免null。越小越简单的数据类型,越是使用更少的磁盘,更低的io,更少的内存,更少的缓存,更少的cpu周期。
varchar和char是两种主要的字符串类型。
varchar用于存储可变长字符串,比定长类型更节省空间,使用1或2个额外字节记录字符串的长度,长度小于255字节使用1个,否则使用2个,varchar节省了存储空间,所以对性能也有帮助。但是由于是变长的,在update时可能比原来更惨,这就导致要做额外的工作。如果一个行中用的空间增长,并在页内没有更多的空间可以存储,这种情况下,innodb需要分裂页来使行可以放进页内。下面这些情况使用varchar是合适的:字符串列的最大长度比平均长度大很多;列的更新很少,使用了像utf8这样复杂的字符集。
char是定长类型,mysql总是根据定义的字符串长度分配足够的空间。char适合存储很短的字符串,或者所有值都接近统一长度,或者经常变更的数据。
blob和text都是为了存储很大的数据而设计的字符串数据类型。
对于uuid或者ip地址等,可以转换成整数或者进行hex编码的,最佳方式是执行编码。
二,mysql schema设计中的陷阱
太多的列,太多的关联,全能的枚举,变相的枚举,非此发明的null。
一,选择优化的数据类型:
更小的通常更好,简单就好,尽量避免null。越小越简单的数据类型,越是使用更少的磁盘,更低的io,更少的内存,更少的缓存,更少的cpu周期。
varchar和char是两种主要的字符串类型。
varchar用于存储可变长字符串,比定长类型更节省空间,使用1或2个额外字节记录字符串的长度,长度小于255字节使用1个,否则使用2个,varchar节省了存储空间,所以对性能也有帮助。但是由于是变长的,在update时可能比原来更惨,这就导致要做额外的工作。如果一个行中用的空间增长,并在页内没有更多的空间可以存储,这种情况下,innodb需要分裂页来使行可以放进页内。下面这些情况使用varchar是合适的:字符串列的最大长度比平均长度大很多;列的更新很少,使用了像utf8这样复杂的字符集。
char是定长类型,mysql总是根据定义的字符串长度分配足够的空间。char适合存储很短的字符串,或者所有值都接近统一长度,或者经常变更的数据。
blob和text都是为了存储很大的数据而设计的字符串数据类型。
对于uuid或者ip地址等,可以转换成整数或者进行hex编码的,最佳方式是执行编码。
二,mysql schema设计中的陷阱
太多的列,太多的关联,全能的枚举,变相的枚举,非此发明的null。
相关文章推荐
- 游戏服务器开发--阿里云Ubuntu 安装mysql
- mysql读写分离(二)-----主从复制
- mysql用户管理(新增用户及权限管理)
- mysql添加远程访问
- MySQL Meta中的length字段 -- (4) 玩儿MySQL代码
- MySQL必知必会笔记(七)事务处理 全球化和本地化(字符集和校对)
- mysql安装及使用语句
- MySQL必知必会笔记(六)存储过程 游标 触发器
- MySQL必知必会笔记(五)插入数据 创建和操纵表
- MySQL必知必会笔记(四)SELECT语句 联结表 高级联结 组合查询 全文本搜索
- windows-----MySQL下载安装、配置与使用(win7x64)
- MySQL必知必会笔记(三)SELECT语句 计算字段 数据处理函数 汇总函数 分组数据 子查询
- mysql读写分离(一)----------mysql安装
- mysql中的多行查询结果合并成一个
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- MySQL必知必会笔记(一)基础知识和基本操作
- mysql case when then end使用方式
- mysql配置文件小优化及主主模式
- MySQL的数据库引擎的类型
- mysql主主+keepalived高并发高负载情况测试数据一致性问题