Mysql升级及配置优化

mysql 5.6升级到5.7

  1. Mysql官网下载最新5.7社区版,mysql-5.7.26-win32.zip
  2. 下载解压后的文件:

  1. 添加配置文件my.ini,主要是数据库配置、参数设置(端口号、字符集、缓冲区大小等),参数配置会影响到mysql读写性能,优化性能后面具体分析

[mysqld]下配置explicit_defaults_for_timestamp=true,这是相对于5.6需要添加的一个配置,具体参考https://www.jianshu.com/p/d7d364745173

 

两个bat文件主要为了方便mysql的安装和卸载

不指定(注释)basedir和datadir,mysql默认初始化data在当前目录,方便后续mysql的打包安装。

 

4.接下来以管理员权限打开cmd, 执行mysqld –initialize,进行mysql初始化,生成data目录

5. 修改密码:

设置my.ini ,添加一行 skip-grant-tables,执行installdb.bat启动服务

进入mysql客户端:

mysql -uroot  -P6706

use mysql

修改密码:

update user set authentication_string=password('hydee_pos_sys') where user='root';

把password_expired 改为不过期:

update user set password_expired='N' where user='root';

删除,skip-grant-tables,重启服务, 然后用用户名密码连接mysql,添加一个账户,给与最高权限

 

Mysql5.7瘦身 从1.7G到330M

 

删除文件夹中的lib 文件夹里的内容是给你重新编译MySQL软件使用的,一般使用不到。

运行时占用优化:table_definition_cache : 1400=>400

table_open_cache:2048=>256,调整后运行内存占用160M左右

 

Mysql配置优化

 

调试sql:

SELECT cg.cg_code

FROM ware_cg_base_info cg

INNER JOIN ware_cp_base_info cp

ON cg.ware_inside_code = cp.ware_inside_code

and cp.cg_code = cg.cg_code

LEFT JOIN t_ware_factory wf ON wf.factoryid = cg.factory_id

WHERE cg.cg_code = 100 and cp.cp_code = 10002;

my.ini配置:

innodb_buffer_pool_size : innodb表影响最大性能的参数,可以缓存数据块和索引键,适当增加这个参数,可以有效减少innodb表的磁盘I/O,因为InnoDB会把尽可能多的数据和索引缓存在缓冲区,这个类似与Oracle的Buffer Pool:如果只采用InnoDB,可以把这个参数调大一点,大约内存的70%左右。  根据实际剩余内存调整

 

innodb_thread_concurrency=9   

innodb_thread_concurrency默认是0,则表示没有并发线程数限制,所有请求都会直接请求线程执行。注意:当 innodb_thread_concurrency 设置为0时,则innodb_thread_sleep_delay的设置将会被忽略,不起作用。如果数据库没出现性能问题时,使用默认值即可。

 

tmp_table_size=60M     默认为 16M

-内部(内存中)临时表的最大大小 

-如果一个表增长到比此值更大,将会自动转换为基于磁盘的表. 

-此限制是针对单个表的,而不是总和. 

innodb_log_buffer_size=5M      默认为8M  默认的设置在中等强度的写入负载及短事物处理时,性能还可以。但是存在大量更新操作或者负载较大时,就要慢慢增加这个参数的值了。不过不要设置太大,会浪费内存。它每秒都会刷新一次,所以不用设置超过1s所需的内存空间,16M足够了。

query_cache_size=0     默认1MB

-查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果. 

-打开查询缓冲可以极大的提高服务器速度, 如果你有大量的相同的查询并且很少修改表. 

-查看 “Qcache_lowmem_prunes” 状态变量来检查是否当前值对于你的负载来说是否足够高. 

-注意: 在你表经常变化的情况下或者如果你的查询原文每次都不同, 

-查询缓冲也许引起性能下降而不是性能提升. 

 

由于采用Innodb引擎,去掉myisam配置:

myisam_max_sort_file_size=100G

myisam_sort_buffer_size=79M  

key_buffer_size

 

优化前配置:查询耗时 mysql 5.6 查询耗时2s左右,占用400M左右

innodb_log_buffer_size=1M 

innodb_thread_concurrency=9

key_buffer_size=8M

tmp_table_size=44M

read_buffer_size=4M

read_rnd_buffer_size=64k

sort_buffer_size=256k

thread_cache_size=10

query_cache_size=0

优化后配置mysql 5.6 , 查询耗时2s左右  5.7查询耗时0.1-0.2s,占用160M左右

innodb_log_buffer_size=2M 默认为1M

innodb_thread_concurrency=8 你的服务器CPU有几个就设置为几,建议用默认一般为8

key_buffer_size=256M 默认为218 调到128最佳

tmp_table_size=64M 默认为16M 调到64-256最挂

read_buffer_size=4M 默认为64K

read_rnd_buffer_size=16M 默认为256K

sort_buffer_size=32M 默认为256K

thread_cache_size=120 默认为60

query_cache_size=0

 

总结

1.经测试,mysql 5.7比之5.6在查询性能, 运行时占用,机器适配上有较好提升,在性能差的机器上,5.7比5.6有更好的性能

2.mysql优化除sql使用正确索引、分库分表外、读写分离等之外,根据服务器性能合理配置mysql参数也能发挥mysql更好性能

 

参考文档:

https://www.jb51.net/article/19464.htm

https://blog.csdn.net/nightelve/article/details/17393631

 

发布了49 篇原创文章 · 获赞 47 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/z2516305651/article/details/93611112
今日推荐