资讯专栏INFORMATION COLUMN

mysql数据库里的一些坑(读高性能mysql有感)

Rocture / 623人阅读

摘要:推荐使用枚举类型来替代字符串如性别男女,但注意其实际存储的是整数,,对应字段值顺序,排序也是按照整数大小排序,而非映射的字符串。经常变动的列不适合使用枚举类型,因为对于数据量大的表来说,性能是不得不考虑的一件事情。

1.int类型后边的括号中的值并不会影响其存储值的范围,仅仅指示了整数值的显示宽度。例如int(8)和int(10)的存储范围都是-2147483648~2147483647。当你选择了填充零时,才能看出区别。

2.主键自增id适合设置为无符号的int类型,这样最大值可以增加一倍:4294967295(2的32次方减一)。

3.要建立索引的字段最好设为NOT NULL,当然其他字段也最好这样做。

4.varchar的长度肯定时越短越好,不要使用默认的255,更长的列会消耗跟多的内存。

5.char类型存储的数据长度小于最大长度时会用空格填充,检索时再剔除,因此如果存入的string最后有空格,查询出来是没有的。

6.Memory引擎不支持blob和text类型字段,如果列表查询使用了blob或text的列且使用了临时表排序,那么将会使用磁盘临时表,严重影响性能。

7.时间戳格式timestamp和datetime,前者占用空间小(4bytes)且与时区相关,优先使用。除非是范围超过了timestamp的范围(1970~2038),不推荐使用int类型。

8.推荐使用枚举类型(enum)来替代字符串(如性别男女),但注意其实际存储的是整数(1,2,...对应字段值顺序),排序也是按照整数大小排序,而非映射的字符串。

9.经常变动的列不适合使用枚举类型,因为Alert Table对于数据量大的表来说,性能是不得不考虑的一件事情。

10.IPv4地址可以保存为无符号int类型,因为它实际上是一个32位的无符号整数,使用mysql函数(INET_ATON和INET_NTOA)进行转换。

11.范式与反范式的使用并不是绝对性的,需要根据自己的业务和数据量合理折中使用。数据量大查询频率高的时候适当的建立冗余字段减少关联,而数据少关联紧密的场合遵循范式化设计。

12.sql中limit 5表示搜索前五条记录,limit 5,10检索6-10条记录,limit 5,-1表示6-last条记录

13.多表联查count统计时,尽量根据查询条件减少连表的数量,数量越少查询时间越少,少一个表(假如这个表数据量很大或者属于别的库那优化的效果更好)可能减少至少一半的时间。

14.Mysql是不支持嵌套事务的,开启了一个事务的情况下,再开启一个事务,会隐式的提交上一个事务。要使用嵌套事务可以通过代码控制开启次数计数,最后提交时判断计数。

待续。。。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47489.html

相关文章

  • MySQL 表锁和行锁机制

    摘要:对于和语句,会自动给涉及数据集加排他锁对于普通语句,不会加任何锁当然我们也可以显示的加锁共享锁排他锁和的最大不同点有两个一,支持事务二,默认采用行级锁。排他锁排他锁,也称写锁,独占锁,当前写操作没有完成前,它会阻断其他写锁和读锁。 MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别...

    luckyyulin 评论0 收藏0
  • 吴镝:TiDB 在今日头条的实践

    摘要:主要应用在今日头条核心系统对象存储系统中,存储其中一部分元数据,支持头条图片和视频相关业务,比如抖音等。用之前,元数据是存在里的一个的盘,因为增长的特别快,所以导致磁盘不够用,只能用分库分表的方案。 showImg(https://segmentfault.com/img/remote/1460000013783802); 本文整理自今日头条数据库中间件/分布式数据库负责人吴镝(知乎 ...

    lufficc 评论0 收藏0
  • Java技术转(兼顾)产品经理——《快速转行做产品经理》有感

    摘要:第四章总结最后的章节其实是一些自学路上的建议与避免小白走错路的坑。结语感谢作者的分享,也看出作者在行业的丰富经验,同时此书确实很适合小白阅读,阅读轻松而且没有太多专业性词汇,让很多人都能对有一个大致的概念。 博客 猫叔的博客 前言 年前部门一次性购买了一批书,我知道这次我应该会被指派阅读一些偏向于管理类的书籍,但是没想到美女领导直接给了我这本书《快速转行做产品经理》,其实一开始我有点...

    MockingBird 评论0 收藏0
  • MySQL实验: 实践索引对全列匹配、最左前缀匹配、范围查询等条件的影响以及了解脏、幻

    摘要:索引实验实验目的了解索引对于全列匹配,最左前缀匹配范围查询的影响。因此在中要谨慎地区分多值匹配和范围匹配,否则会对的行为产生困惑。事务隔离层级实验实验目的了解中事务隔离级别以及什么是脏读,幻读,不可重复读。 索引实验 实验目的:了解索引对于全列匹配,最左前缀匹配、范围查询的影响。实验所用数据库见文章最底部连接。 实验软件版本:5.7.19-0ubuntu0.16.04.1-log (U...

    lewinlee 评论0 收藏0
  • MySQL实验: 实践索引对全列匹配、最左前缀匹配、范围查询等条件的影响以及了解脏、幻

    摘要:索引实验实验目的了解索引对于全列匹配,最左前缀匹配范围查询的影响。因此在中要谨慎地区分多值匹配和范围匹配,否则会对的行为产生困惑。事务隔离层级实验实验目的了解中事务隔离级别以及什么是脏读,幻读,不可重复读。 索引实验 实验目的:了解索引对于全列匹配,最左前缀匹配、范围查询的影响。实验所用数据库见文章最底部连接。 实验软件版本:5.7.19-0ubuntu0.16.04.1-log (U...

    baukh789 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<