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;经常表连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql的timestamp类型_MySQL数据库中的timestamp类型与时区

MySQL的timestamp类型时间范围between 1970-01-01 00:00:01 and 2038-01-19 03:14:07,超出这个范围则值记录为0000-00-00 00:00:00,该类型的一个重要特点就是保存的时间与时区密切相关,上述所说的时间范围是UTC(Universal Time Coordinated)标…

mysql处理时间_MYSQL时间处理  (转)

1.存储日期时间用now();2.存储日期用curdate()/current_date;3.存储时间用time();4.获取年份用year();5.获取月份用month();6.获取月份中的日期用day()或者dayofmonth();7.获取昨天就用date_sub(curdate(),interval 1day)/date_sub(current_date,interval 1 day);或者curdate()…

mysql导入数据比原来多_Oracle和MySQL的数据导入,差别为什么这么大

经常会有一些朋友咨询我一些数据库的问题,我注意到一个很有意思的现象,凡是数据导入的问题,基本上都是Oracle类的,MySQL类的问题脑子里想了下竟然一次都没有。我禁不住开始思考这个未曾注意的问题:为什么Oracle导入数据…

mysql5.7.17配置_mysql-5.7.17-winx64的安装配置

第一步:下载mysql-5.7.17-winx64解压版本:http://dev.mysql.com/downloads/mysql/第二步:解压到安装目录,如:C:\myprogram\mysql-5.7.17-winx64第三步:设置环境变量操作如下:1)右键单击我的电脑…

mysql 8核16g参数优化_问个 MySql 优化问题, 16G, 8 核服务器??

服务器配置:处理器:Xeon E3-1230 V2内存:16G DDR3 1600Mhz硬盘:1TB 企业级硬盘我现在的配置[mysqld]port xxxxsocket xxxdatadir xxxxdefault_storage_engine MyISAM#skip-external-locking#loose-skip-innodbkey_buffer_size …

mysql zero fill_mysql zerofill 的使用

mysql zerofill的使用:那这个int[M]中M是什么意义喃,在定义数值型数据类型的时候,可以在关键字括号内指定整数值(如:int(M),M的最大值为255)显示最大显示宽度,显示宽度M与数据所占用空间,数值的…

mysql第四项_mysql数据库的基本介绍与操作(第四篇-mysql索引篇)

索引概述:索引(也就是mysql中常说的键值key)是存储引擎用户快速找到记录的一种数据结构,这是索引的基本功能,索引对于良好的性能非常关键,尤其是当表中数据量越来越大的时候,索引对性能的影响就越重要,在数据量较小且负载较低时,不恰当的索引对性能的影响可能不明显,但当数据量…

openstack实例控制台显示响应时间过长_监控OpenStack的技巧

如果你以前曾在云平台上工作过,你一定熟悉这些系统的分布式和解耦性质。解耦的分布式系统依赖于微服务来执行特定的任务,每个微服务都会暴露自己的REST(表示状态转移)API。这些微服务通常以诸如RabbitMQ或QPID等消息中间件的形式通过轻量级消息层相互通信…

java8 创建list方式_Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!

今天来分享下在 Java 8 中创建 Stream 的 10 种方式,我就整理了 10 种,其实还有更多,仅供大家参考学习下。 1、Stream.of 可变参数 Stream<String> stream1 = Stream.of("A", "B", "C"); System.out.println("stream1:" + st…

apache php mysql 整合_PHP+Apache+MySQL整合

整合PHPApacheMySQL非常郁闷&#xff0c;抗战到凌晨1&#xff1a;50分&#xff0c;终于胜利了。分享一下配置过程错误处理的历程&#xff0c;希望对后来人有所帮助。一、文件安装PHP下载&#xff1a;http://windows.php.net/downloads/qa/php-5.4.0alpha2-Win32-VC9-x86.zipMyS…

js map满足条件跳出循环_js.es5 map循环一大坑:循环遍历竟然出现逗号!

一、mapmap大法好作为当今程序界最好用的循环方法之一map, 在我的项目里基本替代了for循环map循环常用的一些方法/********* ES6 **********///一行代码可以省略returnarray.map( item > console.log(item))>array.map( item > {return console.log(item)})//多行代码…

logstash grok mysql_【Logstash系列】使用Redis并自定义Grok匹配

之前提到&#xff0c;用RabbitMQ作为消息队列。但是这个东西实在太过高精尖&#xff0c;不懂erlang不会调优的情况下&#xff0c;很容易挂掉——基本上我这里试验结果跑不了半小时日志传输就断了。所以改用简单易行的redis来干这个活。 之前的lib里&#xff0c;有inputs/redis.…

micropython按键控制流水灯_【micro:bit Micropython】The LED Display(1)控制像素点

使用DFrobot研发的micropython编程软件uPyCraft&#xff0c;下载固件(Firmware)和下载程序都非常方便。可以在DFrobot论坛中进行下载。uPyCraft软件运行界面官网中的micro:bit Micropython API介绍得非常详细&#xff0c;为开发人员提供了详细的文字说明和参照。micro:bit Micr…

php mysql 写法_php 类的写法

php 类的写法//Db.class.phpclass Db {private $_dblink;public $result;public function __construct($host, $user, $password, $dbname, $charset utf8) {try{if($this->_dblink mysql_connect($host, $user, $password)) {if(mysql_select_db($dbname)) {$this->qu…

python中exp_python中的exp是什么

Python exp() 函数描述exp() 函数返回 x 的指数&#xff0c;。语法import mathmath.exp(x)注意&#xff1a;exp() 是不能直接访问的&#xff0c;需导入 math 模块&#xff0c;通过静态对象调用该方法。参数x -- 数值表达式。返回值返回 x 的指数&#xff0c;。实例# -*- coding…

python干货_python 基础干货 02

list 与 tuplelist 类似 数组tuple 跟 list 一样, 只是一旦定义, 里边的内容不可以改变.这样, 上边的内容就不可以改变了."可变的" tuple, 不是说 tuple 是不可以改变的么?想内存dict 与 setdict 是 python内置字典, 其他语言中称为 map, 使用键-值(key-value)存储&…

在centOS7中装mysql_在 CentOS7 上安装 MySQL5.7

在 CentOS7 上安装 MySQL5.71 通过 SecureCRT 连接到阿里云 CentOS7 服务器&#xff1b;2 进入到目录 /usr/local/ 中&#xff1a;cd /usr/local/3 创建目录 /usr/local/tools&#xff0c;如果有则忽略&#xff1a;mkdir -p tools4 创建 /usr/local/mysql 目录&#xff0c;如果…

asp mysql insert_用asp把表单数据插入数据库的2种常用方法

用asp把表单数据插入数据库的2种常用方法&#xff1a;1.直接使用sql语句的优点:速度快,不耗资源缺点:不能传递太长的字段内容,字段比较多时不易排错.推荐有经验的编程者优先考虑.具体操作:假设表单中有以下字段:username,password,sex,age对应的,在程序中有username,password,s…

mysql min怎么用_MySQL中MIN()函数的使用教程

MySQL的MIN函数是用来找出一个记录集最小值的记录。要了解MIN函数考虑的EMPLOYEE_TBL表具有以下记录&#xff1a;mysql> SELECT * FROM employee_tbl;--------------------------------------------| id | name | work_date | daily_typing_pages |------------------------…

mysql安装目录问题_Windows下MySQL的安装目录问题

今天发现一个MySQL的问题&#xff0c;当把MySQL的文件目录安放在t字母打头的目录下时&#xff0c;比如d:/test目录&#xff0c;mysql服务就起不来了&#xff0c;报告找不到文件:D:/test/mysql>bin/mysqld-nt.exe --console090811 10:09:55 [ERROR] Cant find messagefile D:…