优化效果(从大到小):

硬件设备 -> 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 优化相关推荐

  1. 熟悉mysql数据库设计和性能优化_Mysql数据库性能优化

    Mysql数据库性能优化,可以从下面三点入手: 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式,适度    遵循三大范式就会带来查询时经常需要join,导致查询效率降低 ...

  2. mysql空值判断怎么优化_MySQL查询语句优化的十个小技巧!

    前言 查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率.最近在对项目中的一些sql进行优化,总结整理了一些方法. 1.尽量避免在 w ...

  3. MySQL的主动优化和被动优化_MySQL“被动”性能优化汇总!

    年少不知优化苦,遇坑方知优化难. --村口王大爷 本文内容导图如下: 我之前有很多文章都在讲性能优化的问题,比如下面这些: 当然,本篇也是关于性能优化的,那性能优化就应该一把梭子吗?还是要符合一些规范 ...

  4. MySQL的主动优化和被动优化_MySQL“被动”性能优化汇总

    本文内容导图如下: 我之前有很多文章都在讲性能优化的问题,比如下面这些: 当然,本篇也是关于性能优化的,那性能优化就应该一把梭子吗?还是要符合一些规范和原则呢? 所以,在开始之前(MySQL 优化), ...

  5. mysql sql优化_Mysql的SQL优化指北

    要知道怎么优化首先要知道一条SQL是怎么被执行的 首先我们会连接到这个数据库上,这时候接待你的就是连接器.连接器负责跟客户端建立连接.获取权限.维持和管理连接. MySQL拿到一个查询请求后,会先到查 ...

  6. mysql数据库sql优化_MySQL 数据库性能优化之SQL优化

    注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据 ...

  7. mysql checking permissions 优化_MySQL 之数据库优化

    不管对于哪种服务,对于其优化,无非是从两个方面着手,第一个是对于硬件方面的优化,第二个是对系统以及服务本身的优化. 1.查询连接MySQL服务器的次数 mysql> show status li ...

  8. mysql100多个字段如何优化_MySQL 调优/优化的 100 个建议

    MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定的安装环境,但是思路是相通的.我已经将它们分成 ...

  9. mysql多次join后count优化_mysql join count 优化案例

    记录一个优化sql的实际案例 三张表, 表结构, 索引如下: tb_phoneback_apply有user_id, handle_userid 索引 以及一个 status 和 create_tim ...

最新文章

  1. 操作系统原理第十章:文件系统
  2. linux cisco路由器,怎样让linux做cisco路由器的专用日志服务器
  3. elasticsearch java likequery_ElasticSearch的模糊查询
  4. url上接收到 el表达式 不渲染_一文摸透从输入URL到页面渲染的过程
  5. 2020德勤面试开始了吗_2020公务员面试公告已出,5月28日开始面试
  6. 一文了解类别型特征的编码方法
  7. golang atomic load 性能_设计模式之Golang单例模式
  8. js语句连接mysql数据库_js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池...
  9. html表单代码原理,HTML表单form
  10. win10支持linux内核版本是多少,win10自带linux版本是多少
  11. 为什么想从测试转开发
  12. 一文彻底看懂成交量的本质
  13. 什么是软件即服务(SaaS) ? SaaS新手入门指南
  14. Alienware-17-R4-630-1060-MacOS 笔记本双显卡 外星人黑苹果hackintosh 10.15
  15. ssh和telnet客户软件ZOC如何设置UTF-8
  16. 使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和
  17. 微信小程序base64图片转换临时链接
  18. Eclipse中文语言包下载后怎么使用
  19. 上班摸鱼看小说的最佳软件
  20. 谷歌公开自动驾驶新专利:通过眼睛注视向量,精确判断注意力

热门文章

  1. java 队列复制_java - 复制堆栈或队列,而无需使用“克隆” - 堆栈内存溢出
  2. Anton and Fairy Tale CodeForces - 785C(二分+思维)
  3. 108. 将有序数组转换为二叉搜索树(二分+搜索)
  4. 千万别用树套树(线段树)
  5. A Simple Math Problem(矩阵快速幂)
  6. pandas合并groupby_Pandas-GroupBy,然后在原始表上合并
  7. linux snmpwalk版本,snmpwalk的Linux的击不返回
  8. java并发编程核心方法与框架_Java并发编程核心方法与框架-Future和Callable的使用...
  9. java内存泄露有什么后果,Java内存泄露问题是什么?
  10. powershell 开发入门_详谈Ubuntu PowerShell(小白入门必看教程)