 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那点事Rows level lock , Rows level lock , 读写性能都非常优秀 读写性能都非常优秀 • 能够承载大数据量的存储和访问 能够承载大数据量的存储和访问 • 拥有自己独立的缓冲池,能够缓存数据和索引 拥有自己独立的缓冲池,能够缓存数据和索引 MySQL 架构设计—应用架构 强一致性 对读一致性的权衡,如果是对读写实时性要求非常高的话, 就将读写都放在 M1 上面, M2 。 比如,订单处理流程,那么对读需要强一致性,实时写实 时读,类似种涉及交易的或者动态实时报表统计的都要采 用这种架构模式 弱一致性 如果是弱一致性的话,可以通过在 M2 上面分担一些读压力 和流量,比如一些报表的读取以及静态配置数据的读取模块 都可以放到 M2 上面。比如月统计报表,比如首页推荐商品 业务实时性要求不是很高,完全可以采用这种弱一致性的设 计架构模式。 中间一致性 压力,而另外一个 idc 机房的 M2 只做 standby 容灾方 式的用途。 当然这里会用到 3 台数据库服务器,也许会增加采 购压力,但是我们可以提供更好的对外数据服务的能力和 途径,实际中尽可能两者兼顾。 MySQL 架构设计—高可用架构  系统优化:硬件、架构 系统优化:硬件、架构  服务优化 服务优化  应用优化 应用优化 MySQL MySQL 优化方式0 码力 | 38 页 | 2.04 MB | 1 年前3 谈谈MYSQL那点事Rows level lock , Rows level lock , 读写性能都非常优秀 读写性能都非常优秀 • 能够承载大数据量的存储和访问 能够承载大数据量的存储和访问 • 拥有自己独立的缓冲池,能够缓存数据和索引 拥有自己独立的缓冲池,能够缓存数据和索引 MySQL 架构设计—应用架构 强一致性 对读一致性的权衡,如果是对读写实时性要求非常高的话, 就将读写都放在 M1 上面, M2 。 比如,订单处理流程,那么对读需要强一致性,实时写实 时读,类似种涉及交易的或者动态实时报表统计的都要采 用这种架构模式 弱一致性 如果是弱一致性的话,可以通过在 M2 上面分担一些读压力 和流量,比如一些报表的读取以及静态配置数据的读取模块 都可以放到 M2 上面。比如月统计报表,比如首页推荐商品 业务实时性要求不是很高,完全可以采用这种弱一致性的设 计架构模式。 中间一致性 压力,而另外一个 idc 机房的 M2 只做 standby 容灾方 式的用途。 当然这里会用到 3 台数据库服务器,也许会增加采 购压力,但是我们可以提供更好的对外数据服务的能力和 途径,实际中尽可能两者兼顾。 MySQL 架构设计—高可用架构  系统优化:硬件、架构 系统优化:硬件、架构  服务优化 服务优化  应用优化 应用优化 MySQL MySQL 优化方式0 码力 | 38 页 | 2.04 MB | 1 年前3
 Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波容器及实例创建 应用交付 资源申请 IO类型 配置 为了保证MySQL的高可用,需要在Docker容器分配时如何保障主从不在同一宿主机上。我们通过自研 Docker容器调度平台管理所有宿主机和容器,自定义Docker容器的分配算法。实现了MySQL的高密度,隔离 化,高可用化部署。 调度规则: 1.同一复制集群的实例在不同主机上。 2.优先分配CPU、内存、磁盘空间资源最空闲的主机。 3. 方式(每个 实例对应一个文件夹)。 这种方式的优势是IO性能最佳,随之而来的缺点是磁盘容量不好估算,有可能在使用了一段时间后出现磁 盘空间不足的问题,这个时候则会启动迁移扩容的流程。 已经在和提供高密度IO分布式存储解决方案厂商接触,计划测试平台接入分布式存储的方案。 磁盘挂载 3301 3302 3303 3304 3305 宿主机磁盘 集群扩容 本地CPU、 memory、disk g、count 支持:distinct、order by、group by、limit、 top:definition text 支持多种拆分方式 不分区 根据关键字段,进行hash分区 根据时间字段,进行时间分区 根据关键字段,进行区间分区 读写分离模式 DB中间件 集群管理 •HA切换 •Slave增加删除 •创建新集群 •查看监控 •慢日志分析 •慢日志查看 •手动备份 手工备份0 码力 | 32 页 | 7.11 MB | 1 年前3 Qcon北京2018--《MySQL的Docker容器化大规模实践》--王晓波容器及实例创建 应用交付 资源申请 IO类型 配置 为了保证MySQL的高可用,需要在Docker容器分配时如何保障主从不在同一宿主机上。我们通过自研 Docker容器调度平台管理所有宿主机和容器,自定义Docker容器的分配算法。实现了MySQL的高密度,隔离 化,高可用化部署。 调度规则: 1.同一复制集群的实例在不同主机上。 2.优先分配CPU、内存、磁盘空间资源最空闲的主机。 3. 方式(每个 实例对应一个文件夹)。 这种方式的优势是IO性能最佳,随之而来的缺点是磁盘容量不好估算,有可能在使用了一段时间后出现磁 盘空间不足的问题,这个时候则会启动迁移扩容的流程。 已经在和提供高密度IO分布式存储解决方案厂商接触,计划测试平台接入分布式存储的方案。 磁盘挂载 3301 3302 3303 3304 3305 宿主机磁盘 集群扩容 本地CPU、 memory、disk g、count 支持:distinct、order by、group by、limit、 top:definition text 支持多种拆分方式 不分区 根据关键字段,进行hash分区 根据时间字段,进行时间分区 根据关键字段,进行区间分区 读写分离模式 DB中间件 集群管理 •HA切换 •Slave增加删除 •创建新集群 •查看监控 •慢日志分析 •慢日志查看 •手动备份 手工备份0 码力 | 32 页 | 7.11 MB | 1 年前3
 MySQL 8.0.17 调优指南(openEuler 20.09)保存在不同的表中,而不是将 所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了 双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其 是开放源码这一特点,一般中小型网站的开发都选择 MySQL作为网站数据库。 1.2 调优原则 性能调优从大的方面来说,在系统设计之初,需要考虑硬件的选择,操作系统的选 调优过程是迭代渐进的过程,每一次调优的结果都要反馈到后续的代码开发中 去。 ● 性能调优不能以牺牲代码的可读性和可维护性为代价。 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键进入。0 码力 | 11 页 | 223.31 KB | 1 年前3 MySQL 8.0.17 调优指南(openEuler 20.09)保存在不同的表中,而不是将 所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了 双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其 是开放源码这一特点,一般中小型网站的开发都选择 MySQL作为网站数据库。 1.2 调优原则 性能调优从大的方面来说,在系统设计之初,需要考虑硬件的选择,操作系统的选 调优过程是迭代渐进的过程,每一次调优的结果都要反馈到后续的代码开发中 去。 ● 性能调优不能以牺牲代码的可读性和可维护性为代价。 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键进入。0 码力 | 11 页 | 223.31 KB | 1 年前3
 MySQL高可用 - 多种方案.............................................................................. 4 2.4.3 Mysql 的安装和配置 ........................................................................................ 4 2.4.4 ............................... 5 2.4.8 Master 和 backup 的 realserver 的配置 ...................................................... 7 2.4.9 Master 和 backup 的启动 ...................................... ............................................................................. 10 3.5.2 Mysql 的安装和配置 ...................................................................................... 10 3.5.30 码力 | 31 页 | 874.28 KB | 1 年前3 MySQL高可用 - 多种方案.............................................................................. 4 2.4.3 Mysql 的安装和配置 ........................................................................................ 4 2.4.4 ............................... 5 2.4.8 Master 和 backup 的 realserver 的配置 ...................................................... 7 2.4.9 Master 和 backup 的启动 ...................................... ............................................................................. 10 3.5.2 Mysql 的安装和配置 ...................................................................................... 10 3.5.30 码力 | 31 页 | 874.28 KB | 1 年前3
 使用 Docker 建立 MySQL 集群<本机的数据库存放目录>:/var/lib/mysql 5,设定 MYSQL_USER、MYSQL_PASSWORD、MYSQL_DATABASE 环境变量可以使容器在 运行时同时创建你所需要的数据库和带有全部权限的用户及其对应密码 6,设定 TERM 环境变量的值可以解决容器不能进入 mysql 控制台的问题。 对于不是自己建立的镜像,建立出来的容器未必能一次达到要求,建议是将 run 命令写成脚本,创建后使用 update apt-get install vim 这样我们才能在容器内修改配置文件。 还有一种方法,就是我们在主数据库容器中操作,之后,使用 docker commit <主数据库容器名> mariadb 这样再创建的容器就包含 vi 了。 3.3 为讲述方便,现在假设:我们有了连个数据库,mdb1 和 mdb2, mdb1 我们作为主 数据库,mdb2 作为从数据库。 首先修改主数据库: docker slave on *.* to ‘sync’@'%' identified by 'sync'; /*保存权限设定*/ flush privileges; /*查看主数据日志状态,需要记住查询结果 File 和 Position 值,是从数据库复 制的日志起点*/ show master status; 在从数据库中执行 SQL 脚本: /*如果已经开启了同步,停止同步*/ stop slave; /*设定主数据库*/0 码力 | 3 页 | 103.32 KB | 1 年前3 使用 Docker 建立 MySQL 集群<本机的数据库存放目录>:/var/lib/mysql 5,设定 MYSQL_USER、MYSQL_PASSWORD、MYSQL_DATABASE 环境变量可以使容器在 运行时同时创建你所需要的数据库和带有全部权限的用户及其对应密码 6,设定 TERM 环境变量的值可以解决容器不能进入 mysql 控制台的问题。 对于不是自己建立的镜像,建立出来的容器未必能一次达到要求,建议是将 run 命令写成脚本,创建后使用 update apt-get install vim 这样我们才能在容器内修改配置文件。 还有一种方法,就是我们在主数据库容器中操作,之后,使用 docker commit <主数据库容器名> mariadb 这样再创建的容器就包含 vi 了。 3.3 为讲述方便,现在假设:我们有了连个数据库,mdb1 和 mdb2, mdb1 我们作为主 数据库,mdb2 作为从数据库。 首先修改主数据库: docker slave on *.* to ‘sync’@'%' identified by 'sync'; /*保存权限设定*/ flush privileges; /*查看主数据日志状态,需要记住查询结果 File 和 Position 值,是从数据库复 制的日志起点*/ show master status; 在从数据库中执行 SQL 脚本: /*如果已经开启了同步,停止同步*/ stop slave; /*设定主数据库*/0 码力 | 3 页 | 103.32 KB | 1 年前3
 MySQL 企业版功能介绍Analyzer, 我们可以识别和分析存在问题的 SQL 代码,同时将数据库性能提 升两倍。更加重要的是,我们在三 天内就完成了这一任务,而过去则 需要数周之久。” —Keith Souhrada, 软件开发工程师, Big Fish Games MySQL 企业版提供了全面的高级功能、管理工具和技术支持,实现了高水平的 MySQL 可扩展性、安全性、可靠性和无故障运行时间。 MySQL 企业版可在开发、部署和管理业务关键型 MySQL 应用的过程中降低风险、削减成本和减 少复杂性。MySQL 企业版具有以下独特优势:  使用 Oracle MySQL 服务云轻松设置、运行和管理云中的 MySQL  使用 MySQL 分组复制来确保数据库的高可用性  通过 MySQL 企业级可扩展性应对指数级增长的用户和数据量  通过 MySQL 企业级备份执行热备份和恢复,从而降低数据丢失的风险  通过 MySQL 企业级安全性来利用现有安全基础架构  使用加密、密钥生成和数字签名保护敏感数据  通过 MySQL 企业级防火墙阻止针对数据库的攻击(如 SQL 注入)  对现有 MySQL 应用实施基于策略的审计合规性  通过 MySQL Enterprise Monitor 提高数据库性能和可用性0 码力 | 6 页 | 509.78 KB | 1 年前3 MySQL 企业版功能介绍Analyzer, 我们可以识别和分析存在问题的 SQL 代码,同时将数据库性能提 升两倍。更加重要的是,我们在三 天内就完成了这一任务,而过去则 需要数周之久。” —Keith Souhrada, 软件开发工程师, Big Fish Games MySQL 企业版提供了全面的高级功能、管理工具和技术支持,实现了高水平的 MySQL 可扩展性、安全性、可靠性和无故障运行时间。 MySQL 企业版可在开发、部署和管理业务关键型 MySQL 应用的过程中降低风险、削减成本和减 少复杂性。MySQL 企业版具有以下独特优势:  使用 Oracle MySQL 服务云轻松设置、运行和管理云中的 MySQL  使用 MySQL 分组复制来确保数据库的高可用性  通过 MySQL 企业级可扩展性应对指数级增长的用户和数据量  通过 MySQL 企业级备份执行热备份和恢复,从而降低数据丢失的风险  通过 MySQL 企业级安全性来利用现有安全基础架构  使用加密、密钥生成和数字签名保护敏感数据  通过 MySQL 企业级防火墙阻止针对数据库的攻击(如 SQL 注入)  对现有 MySQL 应用实施基于策略的审计合规性  通过 MySQL Enterprise Monitor 提高数据库性能和可用性0 码力 | 6 页 | 509.78 KB | 1 年前3
 如何用 MySQL 构建全方位高可用应用纳入任何合同。该信息 不承诺提供任何资料、代码或功能,并且不应该作为制定购买决策的依据。本文档 所述的 Oracle 产品的任何特性或功能的开发、发行和时间规划均由 Oracle 自行决定。 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 3 MySQL 复制 MySQL 半同步 复制 Windows/ Solaris/ Clusterware 群集或 高可用性解决方案 4/16/2017 9 9 . 9 9 9 % 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 5 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 6 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 7 • MySQL Replication • Shared Storage • Group Replication • MySQL Cluster 从数据库 • 会话线程:处理来自应用程序的查询 - 将 数据写入主数据库,将关联事件写入二进制0 码力 | 40 页 | 2.19 MB | 1 年前3 如何用 MySQL 构建全方位高可用应用纳入任何合同。该信息 不承诺提供任何资料、代码或功能,并且不应该作为制定购买决策的依据。本文档 所述的 Oracle 产品的任何特性或功能的开发、发行和时间规划均由 Oracle 自行决定。 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 3 MySQL 复制 MySQL 半同步 复制 Windows/ Solaris/ Clusterware 群集或 高可用性解决方案 4/16/2017 9 9 . 9 9 9 % 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 5 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 6 并不仅仅是可靠地存储数据 支持高可用性的各个层 数据的冗余访问路径 数据的冗余访问路径 数据冗余存储 冗余应用服务器 数据路由 4/16/2017 版权所有 2015,Oracle 和/或其附属公司。保留所有权利。 7 • MySQL Replication • Shared Storage • Group Replication • MySQL Cluster 从数据库 • 会话线程:处理来自应用程序的查询 - 将 数据写入主数据库,将关联事件写入二进制0 码力 | 40 页 | 2.19 MB | 1 年前3
 MySQL 数据库架构灾难恢复解决方案产品描述的任何特性或功能的开发、发布和时间安排仍由 Oracle 自行决定。 Copyright @ 2021 Oracle and/or its affiliates. 3 / 55 IT 灾难和中断:主要原因 停电是导致重大中断的最大原因 Copyright @ 2021 Oracle and/or its affiliates. IT 灾难和中断:代价不断上升 超过一半经历过代价超过10 @ 2021 Oracle and/or its affiliates. 4 / 55 IT 灾难和中断:例子 5 小时的计算机中断代价 1.5 亿美元。该航空公司最终在停电当天取消 了约1,000 个航班,并在接下来的两天内停飞了另外1,000 个航班。 由于取消约130 个航班和延误200 个航班,成千上万的乘客滞留在世界各 地。 在法国云服务irm 的故障后, 数百万个网站下线了。Anger 过去、现在和未来 Copyright @ 2021 Oracle and/or its affiliates. 6 / 55 7 / 55 "过去" - 手动 • 设置复制拓扑通常是手动完成的,需要执行许多步骤 包括用户管理、恢复备份、配置复制... • MySQL 只提供技术部分,让用户来设置(始终自定义 的)架构。 • 甚至需要其他软件... 为DBA 和专家带来了大量工作,他0 码力 | 52 页 | 3.07 MB | 1 年前3 MySQL 数据库架构灾难恢复解决方案产品描述的任何特性或功能的开发、发布和时间安排仍由 Oracle 自行决定。 Copyright @ 2021 Oracle and/or its affiliates. 3 / 55 IT 灾难和中断:主要原因 停电是导致重大中断的最大原因 Copyright @ 2021 Oracle and/or its affiliates. IT 灾难和中断:代价不断上升 超过一半经历过代价超过10 @ 2021 Oracle and/or its affiliates. 4 / 55 IT 灾难和中断:例子 5 小时的计算机中断代价 1.5 亿美元。该航空公司最终在停电当天取消 了约1,000 个航班,并在接下来的两天内停飞了另外1,000 个航班。 由于取消约130 个航班和延误200 个航班,成千上万的乘客滞留在世界各 地。 在法国云服务irm 的故障后, 数百万个网站下线了。Anger 过去、现在和未来 Copyright @ 2021 Oracle and/or its affiliates. 6 / 55 7 / 55 "过去" - 手动 • 设置复制拓扑通常是手动完成的,需要执行许多步骤 包括用户管理、恢复备份、配置复制... • MySQL 只提供技术部分,让用户来设置(始终自定义 的)架构。 • 甚至需要其他软件... 为DBA 和专家带来了大量工作,他0 码力 | 52 页 | 3.07 MB | 1 年前3
共 9 条
- 1













