网站首页 > 博客文章 正文
1.所有表必须使用Innodb储存引擎
MySQL5.5之前MyIsam是默认存储引擎,5.6以后默认的引擎是Innodb
它支持事务,行级锁,有更好的恢复性,高并发下性能更好
当然Innodb无法满足列储存和空间数据
2.数据库和表的字符集统一使用UTF-8
UTF-8兼容性更好
统一字符集可以避免由于字符集转换产生的乱码
对不同字符集的比较操作,比较前会进行字符集的转换,所以使得列上的索引失效,带来性能问题
MySQL中UTF-8字符集汉字占3个字节,ASCII码占用1个字节
3.所有表和字段都需要添加注释
使用comment从句添加表和列的备注
从一开始就进行数据字典的维护
4.尽量控制单表数据量的大小,建议控制在500万以内
500万并不是MySQL数据库的限制,MySQL并没有对单表最大储存设置限制。限制取决于储存设置和文件系统(32位系统单个文件最大不能超过2G)
可以用历史数据归档,分库分表等手段来控制数据量的大小
历史数据归档主要用于日志文档(增长迅速),分库分表用于业务上
5.谨慎使用Mysql分区表
分区表在物理上表现为多个文件,在逻辑上表现为一个表
分区表大家误认为储存在不同的物理文件中,可以更好的利用磁盘的IO。实际上分区表 的不同分区文件最好储存在不同的磁盘阵列上。而我们把所有分区文件放在一起,IO性能优化的效果并不能那么好。
谨慎选择分区键,跨分区查询效率可能更低
建议采用物理分表的方式管理大数据
6.尽量做到冷热数据分离,减少表的宽带
减少磁盘的IO,保证热数据的内存缓存命中率
更有效的利用缓存,避免读入无用的冷数据
经常一起使用的列放到一张表
Mysql每个表限制最多储存4096列,并且每一行的数据大小不能超过65535字节
表越宽,把表装入内存缓存池占用内存也就越大,消耗更多的IO
Select * ---》读入无用的冷数据
垂直拆分
对于目前的mysql,修改一个字段的成本远远大于增加一个字段
7.禁止在表中建立预留字段
预留字段的命名很难做到见名识义
预留字段无法确定储存的数据类型,所以无法选择合适的类型
对预留字段类型的修改,会对表进行锁定
8.禁止在数据库中储存图片,文件等二进制数据
9.禁止在线上做数据库的压力测试
10.禁止从开发环境,测试环境直连生产环境数据库
11. 尽量非空
所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串’’;数值型的默认值为数值0;逻辑型的默认值为数值0;
其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。
datetime、smalldatetime类型的字段没有默认值,必须为NULL。
12. 建议在大多数表中(如工作单),应都有以下字段:
字段名说明类型默认值
CreatorID 创建者 int 默认值为0
CreatedTime 创建时间 Datetime 默认值为NULL
猜你喜欢
- 2024-10-13 mssql与mysql的有什么区别?哪个更好用?
- 2024-10-13 「Excel函数与公式」DATE函数的用法解析
- 2024-10-13 Excel常用日期函数:14个公式满足工龄、年龄、账龄计算
- 2024-10-13 hibernate操作数据库相关注意点(简述hibernate操作数据库的步骤)
- 2024-10-13 玩转MySQL的时间类型:Date、DateTime、TimeStamp、Time
- 2024-10-13 13个日期时间函数公式,掌握一半以上的都是高手
- 2024-10-13 面试题:DATETIME 和 TIMESTAMP 的异同?
- 2024-10-13 MySQL的学习常识(mysql的基础知识)
- 2024-10-13 日期和时间函数之一:DATE、DATEVALUE、DAY
- 2024-10-13 MySQL 8.0 参考手册— 内置函数和运算符参考
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)