高性能MySql系列-Schema与数据类型优化
来源:SegmentFault
时间:2023-01-10 16:25:12 139浏览 收藏
小伙伴们对数据库编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《高性能MySql系列-Schema与数据类型优化》,就很适合你,本篇文章讲解的知识点主要包括MySQL。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!
最佳实践
1.越简单的类型越好
比如整型比字符串型好,因为字符的排序规则、校对规则更复杂。
2.尽量使用MySql内置的类型
比如用datetime存储日期,不要用字符串。
用整型存储IP地址,不要用字符串。因为IP地址xxx.xxx.xxx.xxx实际上底层是32位无符号整数,之所以表示为小数点的形式是为了方便阅读。所以应该使用整型来存储IP地址,Mysql也提供了INET_ATON()和INET_NTOA()在这2种表示形式间转换。
3.列长度越小越好
在存得下的前提下,长度越小越好。因为列长度越小,所需要的CPU、内存、磁盘空间就越少。
4.尽量避免null
通常情况下最好指定列为NOT NULL,除非真的需要NULL值。因为如果列中包含NULL值,对MySql来说更难优化,原因是可为NULL的列会使得索引、值比较都更加复杂。当可为NULL的列被索引时,每个索引记录都需要一个额外的字节来存储。所以在设计表时,如果希望给某列加索引,最好限定这列是NOT NULL的。
5.主键列最好选择整型
整型作为主键的优点是很快,并且方便AUTO_INCREMENT。
如果用字符串类型作为主键,它们很耗空间,并且性能也比整型慢。如果使用UUID作为主键,可以将“-”去掉之后再存储。Mysql提供了UNHEX()函数将UUID值转换为16字节的整数,并且也提供了HEX()重新格式化为16进制的UUID值。
6.计数器表尽量避免只有一行数据
当计数器表(如网站点击次数)只有一行数据时,会导致大量线程阻塞在这个行锁上,可以设计多行数据,每行都有个计数器,客户端请求更新计数器时,可以随机选择某行计数器进行更新,大大提升计数器表的并发性能。在查询总计数器时,只需SUM(count)即可。
本篇关于《高性能MySql系列-Schema与数据类型优化》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!
-
374 收藏
-
499 收藏
-
384 收藏
-
184 收藏
-
265 收藏
-
145 收藏
-
数据库 · MySQL | 15小时前 | MySQL · ip地址 · 数据库设计 · IPv6 · 索引查询 · IPv6 MySQL 8.4 INET6_ATON INET6_NTOA VARBINARY(16)356 收藏
-
数据库 · MySQL | 21小时前 | MySQL · utf8mb4 · 字符集 · 排序规则 · 数据库迁移 · 字符集 排序规则 utf8mb4 MySQL 8.4 SET NAMES 连接字符集423 收藏
-
338 收藏
-
数据库 · MySQL | 23小时前 | MySQL · 权限 · 性能排查 · mysql SHOW PROCESSLIST performance_schema.threads PROCESS权限 会话诊断399 收藏
-
数据库 · MySQL | 1天前 | MySQL · InnoDB · purge · 长事务 · 数据库诊断 · Purge Lag 长事务 InnoDB history list length information_schema.innodb_trx sys.innodb_lock_waits106 收藏
-
数据库 · MySQL | 1天前 | MySQL · JSON · 数据库开发 · 数据清洗 · SQL 查询 · JSON_TABLE MySQL 8.4 JSON_TABLE NESTED PATH ON EMPTY ON ERROR JSON 数组展开390 收藏
-
数据库 · MySQL | 1天前 | MySQL · InnoDB · 备份恢复 · mysqldump · 线上运维 · innodb mysqldump 逻辑备份 MySQL 8.4 single-transaction435 收藏
-
数据库 · MySQL | 1天前 | MySQL · CPU · 数据库 · 性能治理 · 资源组 · MySQL 8.4 MySQL资源组 RESOURCE_GROUP RESOURCE_GROUP_ADMIN CPU限流191 收藏
-
数据库 · MySQL | 1天前 | MySQL · 数据库 · 性能监控 · performance_schema · 慢 SQL · MySQL performance_schema events_statements_history_long DIGEST 异常 SQL 语句历史352 收藏
-
数据库 · MySQL | 1天前 | MySQL · 事务 · InnoDB · 只读 · 数据库权限 · innodb 临时表 MySQL 事务只读 READ ONLY transaction_read_only335 收藏
-
300 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习
-
- 害怕的香水
- 很棒,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢师傅分享文章内容!
- 2023-04-07 03:59:52
-
- 追寻的朋友
- 太全面了,mark,感谢作者大大的这篇文章,我会继续支持!
- 2023-03-04 14:00:05
-
- 舒服的小懒猪
- 这篇技术贴真及时,细节满满,受益颇多,收藏了,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-03-01 04:18:28
-
- 高挑的钢笔
- 这篇博文太及时了,好细啊,受益颇多,码起来,关注作者大大了!希望作者大大能多写数据库相关的文章。
- 2023-02-05 22:29:21
-
- 简单的香氛
- 这篇文章出现的刚刚好,细节满满,感谢大佬分享,已加入收藏夹了,关注作者了!希望作者能多写数据库相关的文章。
- 2023-01-29 03:36:23
-
- 爱听歌的大神
- 很棒,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢博主分享技术贴!
- 2023-01-20 10:04:51
-
- 大力的大白
- 这篇文章太及时了,很详细,写的不错,mark,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-01-14 16:45:00