 MySQL 8.0.17 调优指南(openEuler 20.09)续的代码开发中 去。 ● 性能调优不能以牺牲代码的可读性和可维护性为代价。 1.3 调优思路 性能优化首先要较为精准的定位问题,分析系统性能瓶颈,然后根据其性能指标以及 所处层级选择优化的方式方法。 下面介绍MySQL数据库具体的调优思路和分析过程,如图1所示。 调优分析思路如下: 1. 很多情况下压测流量并没有完全进入到服务端,在网络上可能就会出现由于各种 规格(带宽、最大连接数、新 1 调优概述 2020-10-15 2 2 硬件调优 2.1 BIOS配置 2.1 BIOS 配置 目的 对于不同的硬件设备,通过在BIOS中设置一些高级选项,可以有效提升服务器性能。 方法 步骤1 关闭SMMU。 说明 此优化项只在非虚拟化场景使用,在虚拟化场景,则开启SMMU。 1. 重启服务器过程中,单击Delete键进入BIOS,选择“Advanced > MISC Config”,单击Enter键进入。 7 IO 参数调优 3.8 缓存参数调优 3.9 内核优化 3.10 mysql进程绑核 3.1 关闭 irqbalance 目的 关闭irqbalance,通过手动绑定中断的方法优化性能。 方法 步骤1 停止irqbalance服务。 systemctl stop irqbalance.service 步骤2 关闭irqbalance服务。 systemctl disable0 码力 | 11 页 | 223.31 KB | 1 年前3 MySQL 8.0.17 调优指南(openEuler 20.09)续的代码开发中 去。 ● 性能调优不能以牺牲代码的可读性和可维护性为代价。 1.3 调优思路 性能优化首先要较为精准的定位问题,分析系统性能瓶颈,然后根据其性能指标以及 所处层级选择优化的方式方法。 下面介绍MySQL数据库具体的调优思路和分析过程,如图1所示。 调优分析思路如下: 1. 很多情况下压测流量并没有完全进入到服务端,在网络上可能就会出现由于各种 规格(带宽、最大连接数、新 1 调优概述 2020-10-15 2 2 硬件调优 2.1 BIOS配置 2.1 BIOS 配置 目的 对于不同的硬件设备,通过在BIOS中设置一些高级选项,可以有效提升服务器性能。 方法 步骤1 关闭SMMU。 说明 此优化项只在非虚拟化场景使用,在虚拟化场景,则开启SMMU。 1. 重启服务器过程中,单击Delete键进入BIOS,选择“Advanced > MISC Config”,单击Enter键进入。 7 IO 参数调优 3.8 缓存参数调优 3.9 内核优化 3.10 mysql进程绑核 3.1 关闭 irqbalance 目的 关闭irqbalance,通过手动绑定中断的方法优化性能。 方法 步骤1 停止irqbalance服务。 systemctl stop irqbalance.service 步骤2 关闭irqbalance服务。 systemctl disable0 码力 | 11 页 | 223.31 KB | 1 年前3
 谈谈MYSQL那点事128M 查询缓存区的最大长度,按照当前需求,一 倍一倍增加,本选项比较重要 sort_buffer_size 512K 128M 每个线程的排序缓存大小,一般按照内存可 以设置为 2M 以上,推荐是 16M ,该选项对 排序 order by , group by 起作用 record_buffer 128K 64M 每个进行一个顺序扫描的线程为其扫描的每 张表分配这个大小的一个缓冲区,可以设置 为 用来存放索引区块的缓存值 , 建议 128M 以上,不要大于内存的 30% read_buffer_size 128K 64M 用来做 MyISAM 表全表扫描的缓冲大 小 . 为从数据表顺序读取数据的读操 作保留的缓存区的长度 myisam_sort_buffer_size 16M 128M 设置 , 恢复 , 修改表的时候使用的缓冲 大小,值不要设的太大 服务优化 服务优化 InnoDB InnoDB 选项 innodb_buffer_pool_size 的 40-50%, 设置大 一点来避免在日志文件覆写上不必要的缓冲池刷新 行为 innodb_log_buffer_size 128K 64M 用来缓冲日志数据的缓冲区的大小 . 推荐是 8M , 官方推荐该值小于 16M ,最好是 1M-8M 之间  设计合理的数据表结构:适当的数据冗余 设计合理的数据表结构:适当的数据冗余  对数据表建立合适有效的数据库索引0 码力 | 38 页 | 2.04 MB | 1 年前3 谈谈MYSQL那点事128M 查询缓存区的最大长度,按照当前需求,一 倍一倍增加,本选项比较重要 sort_buffer_size 512K 128M 每个线程的排序缓存大小,一般按照内存可 以设置为 2M 以上,推荐是 16M ,该选项对 排序 order by , group by 起作用 record_buffer 128K 64M 每个进行一个顺序扫描的线程为其扫描的每 张表分配这个大小的一个缓冲区,可以设置 为 用来存放索引区块的缓存值 , 建议 128M 以上,不要大于内存的 30% read_buffer_size 128K 64M 用来做 MyISAM 表全表扫描的缓冲大 小 . 为从数据表顺序读取数据的读操 作保留的缓存区的长度 myisam_sort_buffer_size 16M 128M 设置 , 恢复 , 修改表的时候使用的缓冲 大小,值不要设的太大 服务优化 服务优化 InnoDB InnoDB 选项 innodb_buffer_pool_size 的 40-50%, 设置大 一点来避免在日志文件覆写上不必要的缓冲池刷新 行为 innodb_log_buffer_size 128K 64M 用来缓冲日志数据的缓冲区的大小 . 推荐是 8M , 官方推荐该值小于 16M ,最好是 1M-8M 之间  设计合理的数据表结构:适当的数据冗余 设计合理的数据表结构:适当的数据冗余  对数据表建立合适有效的数据库索引0 码力 | 38 页 | 2.04 MB | 1 年前3
 Oracle 和 MySQL 性能优化感悟1、定一个NSURLProtocol子类 2、注册这个类 3、NSURLProtocol子类实现 method swizzling 拦截的要点: • 拦截到 • 调回去 • 名词约定:原始方法、代理方法 method swizzling 原理 typedef struct objc_method *Method; typedef struct objc_ method { SEL method_name; method_imp; }; method swizzling 原理 基本步骤 1、用class_addMethod为某类添加“代理方法” 2、调用method_exchangeImplementations交换IMP 3、确保你的“代理方法”调用了“原始方法” method swizzling 原理 基本步骤 应用场景 优点/缺点/坑 method swizzling(改进版) 优点/缺点/坑 isa swizzling 特点:针对一个对象 1、(动态)创建目标类子类 2、(动态)为子类添加方法 3、修改目标对象的isa 原理 基本步骤 应用场景 优点/缺点/坑 isa swizzling+NSProxy 1、从NSProxy派生一个子类, 2、实现那三个方法 3、把目标对象的isa指向这个类 fishhook Runlook观察者/CADisplayLink0 码力 | 19 页 | 3.82 MB | 1 年前3 Oracle 和 MySQL 性能优化感悟1、定一个NSURLProtocol子类 2、注册这个类 3、NSURLProtocol子类实现 method swizzling 拦截的要点: • 拦截到 • 调回去 • 名词约定:原始方法、代理方法 method swizzling 原理 typedef struct objc_method *Method; typedef struct objc_ method { SEL method_name; method_imp; }; method swizzling 原理 基本步骤 1、用class_addMethod为某类添加“代理方法” 2、调用method_exchangeImplementations交换IMP 3、确保你的“代理方法”调用了“原始方法” method swizzling 原理 基本步骤 应用场景 优点/缺点/坑 method swizzling(改进版) 优点/缺点/坑 isa swizzling 特点:针对一个对象 1、(动态)创建目标类子类 2、(动态)为子类添加方法 3、修改目标对象的isa 原理 基本步骤 应用场景 优点/缺点/坑 isa swizzling+NSProxy 1、从NSProxy派生一个子类, 2、实现那三个方法 3、把目标对象的isa指向这个类 fishhook Runlook观察者/CADisplayLink0 码力 | 19 页 | 3.82 MB | 1 年前3
 MySQL高可用 - 多种方案环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:  停掉 master 上的 mysqld,看看是否切换(因为 heartheat 不检查服务的可 用性,因此需要你通过而外的脚本来实现,方法前面已经描述)。  停掉 master 的 heartheat 看看是否能正常切换。  停掉 master 的网络或者直接将 master 系统 shutdown,看看能否正常切换。 drbdsetup /dev/drbd0 primary -o mount /dev/drbd0 /drbd/  DRBD 脑裂后的处理 当 DRBD 出现脑裂后,会导致 drbd 两边的磁盘不一致,处理方法如下: 在确定要作为从的节点上切换成 secondary,并放弃该资源的数据: drbdadm secondary r0 drbdadm -- --discard-my-data connect 环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:  停掉 master 上的 mysqld,看看是否切换(因为 heartheat 不检查服务的可 用性,因此需要你通过而外的脚本来实现,方法前面已经描述)。  停掉 master 的 heartheat 看看是否能正常切换。  停掉 master 的网络或者直接将 master 系统 shutdown,看看能否正常切换。0 码力 | 31 页 | 874.28 KB | 1 年前3 MySQL高可用 - 多种方案环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:  停掉 master 上的 mysqld,看看是否切换(因为 heartheat 不检查服务的可 用性,因此需要你通过而外的脚本来实现,方法前面已经描述)。  停掉 master 的 heartheat 看看是否能正常切换。  停掉 master 的网络或者直接将 master 系统 shutdown,看看能否正常切换。 drbdsetup /dev/drbd0 primary -o mount /dev/drbd0 /drbd/  DRBD 脑裂后的处理 当 DRBD 出现脑裂后,会导致 drbd 两边的磁盘不一致,处理方法如下: 在确定要作为从的节点上切换成 secondary,并放弃该资源的数据: drbdadm secondary r0 drbdadm -- --discard-my-data connect 环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:  停掉 master 上的 mysqld,看看是否切换(因为 heartheat 不检查服务的可 用性,因此需要你通过而外的脚本来实现,方法前面已经描述)。  停掉 master 的 heartheat 看看是否能正常切换。  停掉 master 的网络或者直接将 master 系统 shutdown,看看能否正常切换。0 码力 | 31 页 | 874.28 KB | 1 年前3
 使用 Docker 建立 MySQL 集群接下来就需要配置两个数据库了,前提工作是镜像中并没有自带 vi,所以在两 个容器内都需要: apt-get update apt-get install vim 这样我们才能在容器内修改配置文件。 还有一种方法,就是我们在主数据库容器中操作,之后,使用 docker commit <主数据库容器名> mariadb 这样再创建的容器就包含 vi 了。 3.3 为讲述方便,现在假设:我们有了连个数据库,mdb10 码力 | 3 页 | 103.32 KB | 1 年前3 使用 Docker 建立 MySQL 集群接下来就需要配置两个数据库了,前提工作是镜像中并没有自带 vi,所以在两 个容器内都需要: apt-get update apt-get install vim 这样我们才能在容器内修改配置文件。 还有一种方法,就是我们在主数据库容器中操作,之后,使用 docker commit <主数据库容器名> mariadb 这样再创建的容器就包含 vi 了。 3.3 为讲述方便,现在假设:我们有了连个数据库,mdb10 码力 | 3 页 | 103.32 KB | 1 年前3
共 5 条
- 1













