千家信息网

MySQL数据库如何实现正常优化

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,下文主要给大家带来MySQL数据库如何实现正常优化,希望这些内容能够带给大家实际用处,这也是我编辑MySQL数据库如何实现正常优化这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。MySQL数据
千家信息网最后更新 2026年10月31日MySQL数据库如何实现正常优化

下文主要给大家带来MySQL数据库如何实现正常优化,希望这些内容能够带给大家实际用处,这也是我编辑MySQL数据库如何实现正常优化这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

MySQL数据库优化:

前言:
在一个网站架构中,首先出现瓶颈的一定是数据库,其次是存储。
1、硬盘优化:不用虚拟机,用物理机(因为数据库是 IO 密集型的应用)
a、CPU 64位CPU,百度为例:一台机器 8-16 颗 CPU。普通公司:2-4颗 cpu。
b、内存(mem) 百度为例: 96G-128G,3-4个实例。普通公司:32G-64G,跑2个实例。
c、磁盘(disk) 数量越多越好。性能:SSD(高并发) > SAS(普通业务线上) > SATA(线下)
raid 4块盘:raid0 > raid10 > raid5 > raid1
d、网卡 多块网卡bond,以及buffer,tcp优化。
2、软件优化
操作系统:x86_64系统
软件:mysql 编译优化
3、my.cnf 里参数的优化
注意:my.cnf 里参数优化的幅度很小,大部分架构以及SQL语句优化。
思想:
监控:生产参数是一般情况下参数。
命令监控:show global status\G
调优工具:mysqlreport
案例:一些MySQL的错误skip-name-resolve:
http://blog.chinaunix.net/uid-7354272-id-2643611.html
4、SQL语句的优化
a、索引优化
1)、白名单机制---百度,项目开发,DBA参与,减少上线后的慢SQL数量。
抓出慢SQL,配置 my.cnf
long_query_time = 2
log-slow-queries=/data/3306/slow-log.log
按天轮询:slow-log.log
2)、慢查询日志分析工具-----mysqlsla(推荐)
MySQLdumpslow,mysqlsla,myprofi,mysql-explain-slow-log,mysqllogfilter 比较
3)、每天晚上0点定时分析慢查询,发到核心开发,DBA分析及高级运维,CTO的邮箱里。
DBA分析给出优化建议--->核心开发确认更改--->DBA线上操作处理。
b、大的复杂的SQL语句拆分成多个小的SQL语句。
子查询,join连表查询,某个表4000万条记录。
c、数据库是存储数据的地方,但是不是计算数据的地方。
对数据计算,应用类处理,都要拿到前端应用解决。禁止在数据库上处理。
d、搜索功能,like'%老男孩%',一般不要用mysql 数据库。
SQL 语句的详细优化细节:
① 能用定长 char 类型的就不用 varchar 类型。
② 数据库查询尽量不用 select ,除非要查所有字段。
mysql> select id,name from test; 不用mysql> select from test;
③ select 查询的时候,where 条件后面的列类型如果是字符串类型就要加引号,如果是数字类型就不要加引号。
④ 如果一个条件列的前 n 个字符已经接近唯一值,就可以对一个列的前 n 个字符创建索引,不需要对整个列创建索引了。
⑤ 可以创建联合索引,但要注意前缀特性。如果要做复合索引,要把最常用的当做常用条件列的字段放在前面。
⑥ 可以用 explain 查看 select 语句执行计划,慢查询日志或者 show full processlist 某语句长时间可以看到。
⑦ 能批量插入就批量插入,不要逐条插入。
mysql> insert into test values(1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka');
⑧ 使用 set profiles 查看 SQL 语句的执行细节。
5、架构上的优化
1)、业务拆分:搜索功能,like'%老男孩%',一般不要用mysql 数据库。
2)、业务拆分:某些业务应用使用 nosql 持久化存储,例如:memcahcedb,redis,ttserver
粉丝关注,好友关系等等。
3)、数据库前端必须要加 cache,例如:memcached,用户登录,商品查询。
4)、动态的数据静态化。整个文件静态化,页面片段静态化。
5)、数据库集群与读写分离。一主多从,通过程序或者 dbproxy 进行集群读写分离。
6)、单表超过2000万。拆库拆表,人工拆库拆表(登录、商品、订单)
7)、百度,阿里国内前×××司,会这样搞。
6、流程、制度,安全优化
任何一次人为数据库记录的更新,都要走一个流程:
a、人的流程:开发-->核心开发-->运维或DBA
b、测试流程:内网测试-->IDC测试-->线上执行
c、客户端管理,phpmyadmin
有关 mysql 的 innodb_flush_log_at_trx_commit 参数:
innodb_flush_log_at_trx_commit = 1
参数解释:
0:log buffer 将每秒一次地写入 log file 中,并且 log file 的 flush ( 刷到磁盘 )操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。
1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且 flush ( 刷到磁盘 ) 中去,该模式为系统默认。
2:每次事务提交时 MySQL 都会把 log buffer 的数据写入 log file,但是 flush ( 刷到磁盘 ) 操作并不会同时进行。该模式下,MySQL 会每秒执行一次 flush ( 刷到磁盘 ) 操作。
参数修改:
找到 mysql 配置文件 mysql.cnf,修改成合适的值,然后重启 mysql。
注意事项:
当设置为0,该模式速度最快,但不×××全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者云服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。。
当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

对于以上关于MySQL数据库如何实现正常优化,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

数据 数据库 语句 查询 参数 事务 模式 磁盘 类型 系统 索引 开发 不用 业务 流程 分析 应用 普通 安全 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司经营范围 北京互联网科技公司 中国 科技 互联网 北京互联网络科技有限公司 奇酷互联网络科技公司 互联网科技上市公司 互联网科技logo设计 卓越科技互联网 招聘 深圳前海聚择互联网科技有限公司 互联网大会黑科技排名 互联网5g黑科技有哪些 996高科技互联网公司 长沙茂晟互联网科技有限公司 中国互联网有什么科技 广东工业互联网大赛深圳学泰科技 信承诺互联网科技有限公司 互联网科技手抄报图片 保山浩联互联网科技有限公司 互联网企业和网络科技有限公司 科技发展第三阶段互联网时代 河南真二互联网科技有限公司 深圳互联网科技公司 碳银互联网科技有限公司 开启互联网科技时代小说 银川新华互联网科技职业技术培训学校图片 和信科技工业互联网 互联网科技商业 工业互联网等科技实现智能化赋能 2021互联网科技公司排名 米泉互联网科技专业怎么样
0