搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Beta冲刺提交—星期五
2
群晖(Synology)Plex 的服务找不到文件夹_plex 群晖 找不到电影
3
鸿蒙os有什么改变,5G能带来什么改变-从鸿蒙OS说起
4
AIGC:AI绘画给互联网带来潮流新玩法_超过50%的用户对ai绘画只作观赏
5
解决微信小程序报错:[渲染层网络层错误] Failed to load local image resource_[渲染层网络层错误] failed to load local image resource /pa
6
Add-AppxPackage : 部署失败,原因是 HRESULT: 0x80073D02_add-appxpackage : 部署失败,原因是 hresult: 0x80073d02, 无法
7
JavaWeb—Request请求对象_java request
8
python统计图的三层结构设计代码_自动生成三层结构代码(1)概述和准备工作...
9
评 Arc 浏览器_arc浏览器 侧面更多消失
10
信息增益与决策树_信息增益 决策树
当前位置:
article
> 正文
数据库操作规范_生产环境数据库操作规范
作者:笔触狂放9 | 2024-03-10 10:34:36
赞
踩
生产环境数据库操作规范
数据库命名规范
所有数据库对象名称必须小写
。因为MySQL是大小写敏感的,Dbname和dbname是两个不一样的数据库
命名要做到见名识意,禁止使用MySQL保留关键字
。如from,使用的话就会变成 select name,from from user_table;
临时表以tmp_开头,备份表以bak_开头并以时间戳结尾
所有存储相同数据的列名和列类型必须保持一致
。否则在关联查询中会导致隐式的类型转换,使列索引失效
数据库基本设计规范
所有表必须使用Innodb存储引擎
。5.6以后的默认引擎,支持事务,行级锁,更好的恢复性,高并发下性能更好
数据库和表的字符集统一使用UTF8
。统一字符集可以避免由于字符串转换产生的乱码
所有的表和字段都需要添加注释
。
尽量控制单表数据量的大小,建议控制在500万以内
。
谨慎使用MySQL分区表
。谨慎选择分区键,跨分区查询效率更低
尽量做到冷热数据分离,减少表的宽度
。减少磁盘IO,更有效的利用缓存。
禁止
在表中建立预留字段
禁止
在数据库中存储图片,文件等二进制数据
禁止
在线上数据库做数据库压力测试
禁止从开发环境,测试环境直接连生产环境数据库
索引设计规范
限制每张表上的索引数量,建议单张表索引不超过5个。
禁止给表的每一列都建立单独的索引,索引过多导致写入缓慢
每个Innodb表必须有一个主键。
不使用更新频繁的列作为主键,不使用多列主键。不使用UUID、MD5、字符串列作为主键
常见索引列建议。
SELECT、UPDATE、DELETE语句的WHERE从句中的列,包含在ORDER BY 、GROUP BY、DISTINCT中的字段。多表JOIN的关联列
如何选择索引列的顺序。
区分度最高的列放在联合索引的最左侧。尽量把字段长度小的列放在联合索引的最左侧。使用最频繁的列放到联合索引的左侧
避免建立冗余索引和重复索引。
对于频繁的查询优先考虑使用覆盖索引。
避免Innodb表进行索引的二次查找。可以把随机IO变为顺序IO加快查询效率
尽量避免使用外键约束。
但一定要在外键上建立索引。外键可用于保证数据的参照完整性,但会影响父表和子表的写操作从而降低性能
数据库字段设计规范
优先选择符合存储需要的最小的数据类型。
将字符串转换为数据类型存储,如IP。无符号可以比有符号多出一倍的取值范围。VARCHAR(N)中的N表示的是字符数,而不是字节数。虽然存储是按照实际字符串长度,但读入内存时是按照N来读取,过大的定义会消耗更多的内存
避免使用TEXT、BLOB数据类型
避免使用ENUM数据类型。
使用ORDER BY操作效率低。
尽可能把所有列定义为NOT NULL。
索引NULL列需要额外的空间占用
使用TIMESTAMP或DATETIME类型存储时间。
TIMESTAMP占用4字节和INT相同
同财务相关的金额类数据,必须使用decimal类型。
decimal为精准浮点数,计算时不会失去精度
数据库SQL开发规范
建议使用预编译语句进行数据库操作。
一次解析多次调用,同时可防范SQL注入
避免数据类型的隐式转换。
隐式转换会导致索引失效。
充分利用表上已经存在的索引。
使用left join 或 not exist 来优化not in 操作
连接不同的数据库使用不同的帐号,禁止跨库查询
禁止
使用SELECT * 来进行查询,必须使用SELECT <字段列表>查询
禁止
使用不含字段列表的INSERT语句
禁止
使用子查询,可以把子查询优化为join操作。
子查询返回的结果集无法使用索引
避免JOIN关联太多的表。
建议不超过5个
减少同数据库的交互次数
使用 in 代替 or
禁止
使用 order by rand()进行随机排序
WHERE从句中
禁止
对列进行函数转换和计算。
对列进行函数计算会导致无法使用索引
在明显不会有重复值的时候使用UNION ALL而不是UNION。
UNION会把所有数据放到临时表中后再进行去重操作
拆分复杂的大SQL为多个小SQL
数据库操作行为规范
超100万行的批量写操作,要分批多次进行操作
对于大表使用pt-online-schema-change修改表结构。
工具会创建一个临时表以及触发器,将数据先分批迁移到临时表,迁移完成后进行锁表、删表、重命名临时表使之成为主表
禁止
为程序使用的帐号赋予super权限
对于程序连接数据库帐号,遵循权限最小原则
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/217822
推荐阅读
article
基于
SpringBoot
+vue的
线
上
教学
平台
设计
与实现_在
线
编程
教学
平台
的
设计
与实现...
本系统描绘了整个网上
线
上
教学
平台
的
设计
与实现,主要实现的功能有以下几点:管理员;首页、个人中心、学员管理、资料类型管理、...
赞
踩
article
win11
家庭版
docker
和milvus...
2、双击打开下载好的文件Docker Desktop Installer.exe,add shortcut to des...
赞
踩
article
docker
报错
chown
:
cannot
dereference ‘/
proc
/1/fd/1‘: ...
问题前几天在另一台服务器上通过
docker
部署wekan,执行
docker
-compose up -d没有报错,但是cu...
赞
踩
article
自己动手模拟
开发
一个
简单的
Web
服务器
_简易
web
服务器
开发
一个
简易的
web
服务器
,它仅能...
自己动手模拟
开发
一个
简单的
Web
服务器
时间 2015-02-01 22:45:00 博客园-原创精华区原文 http:/...
赞
踩
article
使用
Node
-
RED
处理
MQTT
数据
_nodered
数据
处理
...
至此,我们完成了安装并使用
Node
-
RED
连接到
MQTT
云服务,以及对
MQTT
消息
数据
进行过滤和
处理
,最后再...
赞
踩
article
mqtt
调试
工具--
mqtt
.
fx
...
mqtt
调试
工具–
mqtt
.
fx
mqtt
协议在物联网开发过程占据重要地位,如何根据
mqtt
标准协议连接云平台呢?以阿里的...
赞
踩
article
jenkins
编译
打包
及自动化
部署
_
jenkins
打包
,
发布
,
部署
...
Jenkins_
jenkins
打包
,
发布
,
部署
jenkins
打包
,
发布
,
部署
...
赞
踩
article
kvm
创建
虚拟
机
硬盘
大小
_如何调整
KVM
虚拟
磁盘的
大小
...
kvm
创建
虚拟
机
硬盘
大小
I test it for qcow2 format. Other formats are TB...
赞
踩
article
Spring
Boot
部署在Windows...
下项目保存数据到数据库中,中文乱码问题。排除请求乱码,接收乱码。插件(多模块项目只需在服务模块添加插件)启动时指定配置文...
赞
踩
article
Oracle
ROWNUM
用法和
分页
查询
总结_
oracle
rownum
只能小于不能
等于
...
ROWNUM
可能都知道
ROWNUM
只适用于小于或小于
等于
,如果进行
等于
判断,那么只能
等于
1,不能进行大于的比较。ROWN...
赞
踩
article
mqtt
研究入门(每天记录
一点点
,
成果总是会有
的
)_
mqtt
深入浅出
...
首先利用
mqtt
.fx接收或者发送消息
,
我用
的
是
mqtt
.fx 1.7版本
,
下
的
最新版
,
界面如图所示:每个界面
的
作用详见...
赞
踩
article
mac
无法在
移动硬盘
上
新建
文件夹
mac
如何在
移动硬盘
新建
文件夹
_
mac
在
移动硬盘
上
新建
文件夹
...
要实现Mac在NTFS格式
移动硬盘
内
新建
文件夹
,需要打开Mac写入NTFS格式
移动硬盘
的权限。遇到了Mac无法在
移动硬盘
...
赞
踩
article
太难了
!
2021
计算机
考研
这么多
大学
专业课
变化
!
...
小编每年都在整理
专业课
变化
的
大学
名单:【19
考研
】复习大半年,这些学校考试科目却变了【
计算机
/软件专业】【20
考研
】48...
赞
踩
article
centos
7.9系统
安装
老
版本
jenkins
,并解决
插件
问题
_
jenkins
安装
旧
版本
...
因为
jenkins
随着时间推移,其
版本
也越来越新,支持它运行的JDK也越来越新。基于不折腾的目标,我们
安装
一个老的固定版...
赞
踩
article
ASP
.
NET
网络
在线
考试
系统
的
设计与实现(论文+源码)_Nueve_基于.
net
的
在线
考试
系统
课...
摘 要随着计算机技术
的
发展和互联网时代
的
到来,人们已经进入了信息时代,也有人称为数字化时代。数在数字化
的
网络
环境下,学生...
赞
踩
article
Kali
linux
live
boot
在
U盘
上的安装过程_
kali
live
boot
...
配置
kali
Linux
live
boot
的详细过程及数据持久化_
kali
live
boot
kali
live
b...
赞
踩
article
最
详细
UWB
技术
及
特点介绍...
【 关注与分享,是对原创
最
大的鼓励 】这篇文章偏
技术
,信息偏深,建议大家可以先跳到感兴趣的章节阅读;01
UWB
简介UW...
赞
踩
article
node
-
red
-
mysql
_使用
node
red
操作
数据库
...
缘起
node
-
red
是目前为止我用到的最好的物联网开发工具,它既可以将相关经验沉淀为节点,又可以灵活快速的定制开发,快速...
赞
踩
article
windows
10
my
sql
5.7
my
.
ini
不起作用
解决方法(实操)_
windows
my
sq...
1. 打开服务,找到对应的我们的
my
sql
服务。找到当前服务使用的
my
.
ini
的配置文件路径。3.然后对
my
.
ini
修...
赞
踩
article
Linux
怎么对文件内容
trim
,
trim
命令_
Linux
trim
命令用法详解:
trim
fil...
trim
模块
该
模块
用于删除 html , 内嵌 javascript 和 css 中的注释以及重复的空白符。locat...
赞
踩
相关标签
spring boot
vue.js
java
大学生项目实战
mysql数据库
线上教学平台
课程设计
docker
容器
运维
tomcat
linux
物联网
jenkins
自动化
python
mysql
kvm
windows
后端
jar
oracle