mysql8 优化_MySQL 8.0 优化
优化效果(从大到小):
硬件设备 -> MySQL数据库 -> Linux操作系统 -> 表设计
—————————————————————————————————————-
1
硬件设备优化
提升硬件设备,例如使用SSD高速磁盘,CPU等。
—————————————————————————————————————-
2
MySQL数据库配置优化
# 物理内存的50%~80%,这里为
innodb_buffer_pool_size=2000000000
# 双1模式
# 按事物刷盘,刷日志
innodb_flush_log_at_trx_commit=1
# 提交1次事物刷1次,可以为n
sync_binlog=1
# 脏页占innodb_buffer_pool_size的比例时,触发刷脏页到磁盘
# 25%~50%
innodb_max_dirty_pages_pct=30
# 后台进程最大IO性能指标
# 默认200,如果SSD,调整为5000~20000
innodb_io_capacity=200
# 默认10M。防止高并发下,数据库受影响
innodb_data_file_path=ibdata1:1024M:autoextend
# 默认2,单位s。慢查询时间。建议0.1~0.5
long_qurey_time=0.3
# 8.0默认row。记录格式,让数据安全可靠
binlog_format=row
# 默认8小时。交互等待时间和非交互等待时间
# 建议300~500s,两参数值必须一致,且同时修改
interactive_timeout=500
wait_timeout=500
# 过大,容易OOM(内存溢出)
# 调高该参数应降低interactive_timeout、wait_timeout的值
# 默认151
max_connections=200
# 过大,实例恢复时间长;过小,造成日志切换频繁
# 默认50331648,50MB
innodb_log_file_size=50331648
# 全量日志建议关闭
# 默认关闭
general_log=0
—————————————————————————————————————-
3
Linux操作系统层面优化
cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
修改为deadline或noop,cfq,严重影响数据库性能
文件系统采用xfs,其次是ext4,不用ext3
内核参数vm.swappiness,默认60;0表示不用swap,容易OOM;100表示使用swap,而不释放内存
cat /proc/sys/vm/swappiness
无法修改,则编辑/etc/sysctl.conf,加入vm.swappiness的值
还有
vm.dirty_background_ratio:默认10,建议不超过10
vm.dirty_ratio:默认20,建议不超过20
—————————————————————————————————————-
4
表设计及其他优化
1.库名、表名、字段名小写,用“_”分隔。
2.使用自增列int或bigint作为主键
3.ipv4使用int存储,inet_aton、inet_ntoa
4.sex、status使用tinyint
5.业务表切忌出现大类型字段,sql避免or子句
6.只需获取必要字段时,避免使用select *,还可能用到覆盖索引
7.建立索引在选择性高的字段上,不要在sex、status上建
8.单表索引数量不要超过4~5个
9.字段默认加上not null,避免出现null,count()统计不会计null
10.需要存储表情需要UTF8mb4
11.使用搜索引擎sphinx替代模糊搜索
12.explain执行计划中的extra项中有Using filesort或Using temporary时,考虑创建排序索引和分组索引
13.pt-query-digest捕获慢查询语句
—————————————————————————————————————-
5(附加)
优化一条SQL语句:
1.表的数据类型是否设计得合理,数据类型越简单越小原则
2.表中碎片整理,alter table comment_infos engine = innodb;
3.查看表的统计信息,select * from information_schema.tables where table_name=”comment_infos”\G;
4.explain查看执行计划
5.建索引前查看该字段的选择性,越接近1越高,主键索引和唯一索引的选择性是1
6.在查看explain,对比索引效果。在合理的字段建立索引:经常出现在where后;经常order by或group by;经常表连接。
mysql8 优化_MySQL 8.0 优化相关推荐
- 熟悉mysql数据库设计和性能优化_Mysql数据库性能优化
Mysql数据库性能优化,可以从下面三点入手: 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式,适度 遵循三大范式就会带来查询时经常需要join,导致查询效率降低 ...
- mysql空值判断怎么优化_MySQL查询语句优化的十个小技巧!
前言 查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率.最近在对项目中的一些sql进行优化,总结整理了一些方法. 1.尽量避免在 w ...
- MySQL的主动优化和被动优化_MySQL“被动”性能优化汇总!
年少不知优化苦,遇坑方知优化难. --村口王大爷 本文内容导图如下: 我之前有很多文章都在讲性能优化的问题,比如下面这些: 当然,本篇也是关于性能优化的,那性能优化就应该一把梭子吗?还是要符合一些规范 ...
- MySQL的主动优化和被动优化_MySQL“被动”性能优化汇总
本文内容导图如下: 我之前有很多文章都在讲性能优化的问题,比如下面这些: 当然,本篇也是关于性能优化的,那性能优化就应该一把梭子吗?还是要符合一些规范和原则呢? 所以,在开始之前(MySQL 优化), ...
- mysql sql优化_Mysql的SQL优化指北
要知道怎么优化首先要知道一条SQL是怎么被执行的 首先我们会连接到这个数据库上,这时候接待你的就是连接器.连接器负责跟客户端建立连接.获取权限.维持和管理连接. MySQL拿到一个查询请求后,会先到查 ...
- mysql数据库sql优化_MySQL 数据库性能优化之SQL优化
注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据 ...
- mysql checking permissions 优化_MySQL 之数据库优化
不管对于哪种服务,对于其优化,无非是从两个方面着手,第一个是对于硬件方面的优化,第二个是对系统以及服务本身的优化. 1.查询连接MySQL服务器的次数 mysql> show status li ...
- mysql100多个字段如何优化_MySQL 调优/优化的 100 个建议
MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定的安装环境,但是思路是相通的.我已经将它们分成 ...
- mysql多次join后count优化_mysql join count 优化案例
记录一个优化sql的实际案例 三张表, 表结构, 索引如下: tb_phoneback_apply有user_id, handle_userid 索引 以及一个 status 和 create_tim ...
最新文章
- 操作系统原理第十章:文件系统
- linux cisco路由器,怎样让linux做cisco路由器的专用日志服务器
- elasticsearch java likequery_ElasticSearch的模糊查询
- url上接收到 el表达式 不渲染_一文摸透从输入URL到页面渲染的过程
- 2020德勤面试开始了吗_2020公务员面试公告已出,5月28日开始面试
- 一文了解类别型特征的编码方法
- golang atomic load 性能_设计模式之Golang单例模式
- js语句连接mysql数据库_js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池...
- html表单代码原理,HTML表单form
- win10支持linux内核版本是多少,win10自带linux版本是多少
- 为什么想从测试转开发
- 一文彻底看懂成交量的本质
- 什么是软件即服务(SaaS) ? SaaS新手入门指南
- Alienware-17-R4-630-1060-MacOS 笔记本双显卡 外星人黑苹果hackintosh 10.15
- ssh和telnet客户软件ZOC如何设置UTF-8
- 使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和
- 微信小程序base64图片转换临时链接
- Eclipse中文语言包下载后怎么使用
- 上班摸鱼看小说的最佳软件
- 谷歌公开自动驾驶新专利:通过眼睛注视向量,精确判断注意力
热门文章
- java 队列复制_java - 复制堆栈或队列,而无需使用“克隆” - 堆栈内存溢出
- Anton and Fairy Tale CodeForces - 785C(二分+思维)
- 108. 将有序数组转换为二叉搜索树(二分+搜索)
- 千万别用树套树(线段树)
- A Simple Math Problem(矩阵快速幂)
- pandas合并groupby_Pandas-GroupBy,然后在原始表上合并
- linux snmpwalk版本,snmpwalk的Linux的击不返回
- java并发编程核心方法与框架_Java并发编程核心方法与框架-Future和Callable的使用...
- java内存泄露有什么后果,Java内存泄露问题是什么?
- powershell 开发入门_详谈Ubuntu PowerShell(小白入门必看教程)