首页 > 数据库 >MYSQL性能优化-CPU/内存/磁盘

MYSQL性能优化-CPU/内存/磁盘

时间:2023-05-25 16:34:35浏览次数:80  
标签:capacity read innodb 内存 io MYSQL CPU

CPU

配置MYSQL的IO线程与CPU核数一致。通过以下命令查看当前配置的配置,默认4

#show variables like ‘%_io_threads’;

只能通过修改配置文件来修改以上的配置

innodb_read_io_threads=16

innodb_read_write_threads=16

配置后需要重启MYSQL服务

内存

超过4G内存则需要CPU支持64位应用。

查看内存是否存在瓶颈:

#show global status like ‘%innodb%read%’;

缓冲池命中率:

Innodb_buffer_pool_read_requests/(Innodb_buffer_pool_read_requests+

Innodb_buffer_pool_reads+Innodb_buffer_pool_read_ahead)

如果大于99%则标识内存压力不大。

磁盘

通过perf-tools-master/iosnoop查看磁盘的 延时

通过以下命令查看系统IOPS:

#fio -name iops -rw=randread -bs=4k -runtime=60 -iodepth 32 -filename /root -ioengine libaio -direct=1

机械硬盘:寻道时间、转速影响“随机写入、读取数据”性能,可以通过RAID提升性能。

固态硬盘:不需要寻到,因此读取效率高,数据不可更改,需要擦除。

RAID0:多块合并一块,受限IO总线。

RAID1:两组以上N个磁盘互为镜像(可靠性最高)。

RAID5:硬盘分区技术,写入较慢(校验信息),读取与RAID0接近。

innodb_io_capacity:参数定义了InnoDB后台任务每秒可用的I/O操作数(IOPS)

innodb_io_capacity 配置建议,它是innodb_io_capacity_max的一半,默认innodb_io_capacity=100。同样,它对读无效对写有决定意义。

在频繁写操作的时候才有意义(它不适用于读操作)。若你真的需要对它进行调整,最好的方法是要了解系统可以支持多大的 IOPS。譬如,假设服务器有一块 SSD 硬盘,我们可以设置 innodb_io_capacity_max=6000 和 innodb_io_capacity=3000(最大值的一半)。运行 sysbench 或者任何其他基准工具来对磁盘吞吐量来进行基准测试是一个好方法。

innodb_io_capacity 它会直接决定mysql的tps(吞吐性能),这边给出参考: sata/sas硬盘这个值在200 sas raid10: 2000 ssd硬盘:8000 fusion-io(闪存卡):25,000-50,000

标签:capacity,read,innodb,内存,io,MYSQL,CPU
From: https://www.cnblogs.com/wangchaozhi/p/17431730.html

相关文章

  • The MySQL server is running with the --skip-grant-tables option so it cannot exe
     TheMySQLserverisrunningwiththe--skip-grant-tablesoptionsoitcannotexecutethisstatement 默认情况下,启动MySQL数据库实例期间,会读取所有的权限表条目到内存中,后续被缓存到内存中的权限条目作为依据即刻对后续的控制访问生效(传送门)。使用"skip-grant-tab......
  • MySQL快速安装配置及相关命令
    安装下载https://dev.mysql.com/downloads/mysql/配置,解压并建立初始化配置文件my.ini,内容如下:[mysqld]#设置3306端口port=3306#设置mysql的安装目录basedir=D:\mysql-8.0.32-winx64#设置mysql数据库的数据的存放目录datadir=D:\mysql-8.0.32-winx64\data#允......
  • MySQL——2.数据库的安装及配置(亲测有效)及启动MySQL服务的两种方法
    安装文件的mysql-installer-community-8.0.3.0-rc.msi的链接:https://pan.baidu.com/s/1G-hO_IlhlFqVuhO_mHjKzA密码:emhm目录文章目录一、数据库的安装及配置步骤1.下载后,双击msi文件安装。2.打勾,点击Next3.选择server,点击Next4.点击Execute按钮5.点击Next按钮。6.点击Next按钮。......
  • 腾讯云云服务器Centos系统安装MySQL数据库详细教程
    文章目录一.前言二.教程一.前言      今天是2021年的2月2日,可以说我把一件压在心底很久的一件事做了,今天我用代金卷买了4个月的云服务器,申请了备案,并且配置了MYSQL,有兴趣的可以往下看看,如果是奔着标题来了的,可以直接看下面。      我本身是学c/c++这一类方向的,网......
  • 内存溢出OutOfMemoryError(OOM)
    除了程序计数器其它都会发生内存溢出:堆:堆内存耗尽,对象越来越多,又一直在使用,不能被垃圾回收。方法区:方法区内存耗尽,加载的类越来越多,在运行期间动态产生大量的类。栈:方法调用次数过多,无限创建大量的线程。......
  • JVM内存结构
    JVM内存结构由五部分组成:堆:java堆是所有线程共享的一块内存,几乎所有的对象实例和数组都要在堆中分配内存,因此该区域也经常发生垃圾回收操作。方法区:存放已被加载的类信息。比如:常量、静态变量等。虚拟机栈:线程私有的,每个方法执行时都会创建一个栈帧,用来存储局部变量、操作数、......
  • 通过Java代码备份Mysql数据库
    MainpublicclassMain{publicstaticvoidmain(String[]args){//备份数据库BakDb.bakDB();//获取本地备份的sql文件List<String>names=Unitls.sqlFileNameByLocal();//获取最后一个文件名Stringname=names......
  • Mysql:低版本的mysql,5.7-,不知道root密码,如何控制(增、删、改、查)mysql.user:变相跳过mysq
    可以通过直接在mysqld的服务器上,通过os层的文件操作+为mysqld进程发送sighup(-1)信号实现。原理:低版本的mysql,5.7-,其用户账号是通过mysql系统库下的user系统表来控制的;而,mysql.user表是myisam引擎表;所以,我们只要将user.frm\user.MYD\user.MYI这3个相关数据表文件,在o......
  • 关于MYSQL连接后关闭连接问题
    因为创建连接并注册驱动时可能会错先错误,但是链接还是会进行创建 ,如果不判断连接Connection为不为空就关闭的话会引起空指针异常,同理ResultSet、PreparedStatement也是如此。创建顺序是从Connection->Preparedstatment->ResultSet,关闭顺序则是从ResultSet->Preparedstat......
  • docker启动mysql失败
    root@ecs-kc1-small-1-linux:~#dockerrun-p3306:3306mysql:8-oracle2022-03-0513:40:49+00:00[Note][Entrypoint]:EntrypointscriptforMySQLServer8.0.28-1.el8started.2022-03-0513:40:50+00:00[Note][Entrypoint]:Switchingtodedicateduser'mys......