加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL最新版8.0与5.7之机能比拟

发布时间:2019-09-25 20:13:44 所属栏目:编程 来源:码云的三弟码农
导读:简述 在Oracle MySQL团队的敦促下,MySQL 8.0产生了庞大的变革和修改。 物理文件已变动。譬喻,*.frm,* .TRG,*.TRN和* .par 不再存在。添加了大量的新特征,如通用表表达式(Common Table Expressions CTE),窗口函数(Window Functions),不行见索引(
副问题[/!--empirenews.page--]

简述

在Oracle MySQL团队的敦促下,MySQL 8.0产生了庞大的变革和修改。

物理文件已变动。譬喻,*.frm,* .TRG,*.TRN和* .par 不再存在。添加了大量的新特征,如通用表表达式(Common Table Expressions CTE),窗口函数(Window Functions),不行见索引( Invisible Indexes),正则表达式(regexp) -MySQL8.0此刻已经完全支持Unicode,且具有多字节安详特征。数据字典也产生了变革。它此刻与一个事宜性数据字典归并,该字典存储有关数据库工具的信息。与早年的版本差异,字典数据存储在元数据文件和非事宜表中。

安详性获得了改造,caching_sha2_password认证方法代替了之前的mysql_native_password认证方法,成为默认的身份验证方法。它提供了更强盛的机动性,并且也增强了安详性,即它要求必需行使安详毗连或通过RSA密钥对实现的支持暗码互换的未加密链接。

本篇暂不接头其新特征,而是将其机能与MySQL 5.7举办比拟,看看它是怎样改造的。

Server Setup and Environment处事器配置和情形

对付此基准测试,我规划行使基于AWS EC2最小设置的体系情形:

  • 实例范例:t2.xlarge实例
  • 存储:gp2(SSD存储,最小100 IOPS,最大16000 IOPS)
  • 假造CPU:4
  • 内存:16GiB
  • MySQL5.7版本:MySQLCommunity Server (GPL) 5.7.24
  • MySQL8.0版本:MySQLCommunity Server - GPL 8.0.14

在这个基准测试中,我也针对一些参数项的取值举办了设置,它们是:

  • innodb_max_dirty_pages_pct= 90 ##这是MySQL 8.0中的默认值。
  • innodb_max_dirty_pages_pct_lwm= 10 ##这是MySQL 8.0中的默认值
  • innodb_flush_neighbors=0
  • innodb_buffer_pool_instances=8
  • innodb_buffer_pool_size=8GiB

这里对两个版本(MySQL 5.7和MySQL 8.0)别的参数项的设置是参照ClusterControl的my.cnf模板举办调优。

另外,我在这里不行使MySQL8.0的新身份验证方法,即caching_sha2_password认证方法。更换的是在这两个版本中都行使mysql_native_password,外加设置innodb_dedicated_serve=OFF(默认值),由于innodb_dedicated_serve是MySQL 8.0的新特征。

为了简化事变,我行使ClusterControl设置MySQL 5.7 Community version节点,然后把该节点从集群中的剔除,使其成为一个单独主机,并封锁集群节制主机,使MySQL 5.7节点处于休眠状态(不监控流量)。从技能上讲,MySQL 5.7和MySQL8.0都是休眠节点,在节点上没有勾当毗连通,因此它根基上是一个纯粹的基准测试。

Commands and Scripts Used行使的呼吁和剧本

对付此使命,sysbench用于测试和负载模仿这两个情形。以下测试中行使的呼吁和剧本:

  •  
  1. sb-prepare.sh 
  2.  #!/bin/bash  
  3. host=$1#host192.168.10.110port=3306user='sysbench'password='MysqP@55w0rd'table_size=500000rate=20ps_mode='disable'sysbench/usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --threads=1--max-requests=0 --time=3600 --mysql-host=$host --mysql-user=$user--mysql-password=$password --mysql-port=$port --tables=10 --report-interval=1--skip-trx=on --table-size=$table_size --rate=$rate --db-ps-mode=$ps_modeprepare 

sb-run.sh

  •  
  1. #!/usr/bin/envbash2  
  2. host=$1port=3306user="sysbench"password="MysqP@55w0rd"table_size=100000tables=10rate=20ps_mode='disable'threads=1events=0time=5trx=100path=$PWD 
  3.  counter=1 
  4.   
  5. echo "thread,cpu" >${host}-cpu.csv  
  6. for i in 16 32 64 128 256 512 1024 2048;  
  7. do 
  8.  threads=$i 
  9.  mysql -h $host -e"SHOW GLOBAL STATUS" >> $host-global-status.logtmpfile=$path/${host}-tmp${threads}touch $tmpfile/bin/bashcpu-checker.sh $tmpfile $host $threads & 
  10.   
  11. /usr/share/sysbench/oltp_read_write.lua--db-driver=mysql --events=$events --threads=$threads --time=$time--mysql-host=$host --mysql-user=$user --mysql-password=$password--mysql-port=$port --report-interval=1 --skip-trx=on --tables=$tables--table-size=$table_size --rate=$rate --delete_inserts=$trx --order_ranges=$trx--range_selects=on --range-size=$trx --simple_ranges=$trx --db-ps-mode=$ps_mode--mysql-ignore-errors=all run | tee -a $host-sysbench.log 
  12.   
  13. echo"${i},"`cat ${tmpfile} | sort -nr | head -1` >> ${host}-cpu.csv 
  14. unlink ${tmpfile} 
  15.  mysql -h $host -e"SHOW GLOBAL STATUS" >> $host-global-status.log 
  16. done 
  17.   
  18. python $path/innodb-ops-parser.py $host 
  19.  mysql -h $host -e "SHOW GLOBALVARIABLES" >> $host-global-vars.log 

因此,剧本只是筹备sbtestschema并添补表和记录。然后,它行使

/usr/share/sysbench/oltp_read_write.lua剧本执行读/写负载测试。该剧本转储全局状态和MySQL变量,网络CPU操作率,并理会由剧本innodb-ops-parser.py处理赏罚的InnoDB行操纵。剧本按照基准测试时代网络的转储日记天生* .csv文件,我在这里行使Excel电子表格从* .csv文件天生图表。请搜查 github中提交的代码。

此刻,让我们继承处理赏罚图表功效!

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读