Category Archives: performance

performance

动态代理 MySQL slave 端口

By | 2017/10/16

背景介绍 一直以来我们的数据库主从架构都以 vip 作为高可用的基石, 通过 vip + MHA 的方式完成 master 的高可用, 并未对 slave 进行相关的高可用设计. 随着时间的推移, 为了减少一些业务对 master 的繁重的操作, 线上的一小部分业务开始连接 slave 对外提供服务. 这些常见的业务包括以下类型: 1. op 相关的工程, 统计类大查询; 2. 日志分析类的查询操作; 3. 使用 atlas 进行读写的业务; 4. 主从延迟无关, 以读为主的业务; 我们现有的业务中, 并未使用 atlas, proxysql 等中间件, 所以 op 后台类的业务查询都通过 slave 服务. 不过在过往的几次故障案例中, MHA 切换主从后会出现以下情况: +——–+ +——–+ | vip | | vip… Read More »

mydumper 和 mysqldump 对比使用

By | 2017/05/19

介绍 详细安装说明见: mydumper 如果只是备份几张表或单个库, 相比 innobackup 而言, mysqldump 和 mydumper 更为方便, 不过 mydumper 增加了相对较多的特性, 比如多线程备份, 正则匹配备份, 分组和自检等功能. 另外 mydumper 和 mysqldump 本质上是一样的导出逻辑数据, 不支持在线热备 innodb. 当然我们也可以使用 innobackup 备份部分表数据, 但是它和 mydumper 和 mysqldump 不是一类备份方式, 所以下文只测试 mydumper 和 mysqldump 之间的使用. mydumper 导出 使用 mydumper 工具以 8 个线程导出 test(9.4G) 的数据, 并压缩, 如下所示: mydumper -B test –regex ‘test.*’ -c -e… Read More »

使用 MySQL 实现搜索附近的人

By | 2017/05/10

背景介绍 现今地理位置功能非常普及, 在很多网站, 手机 app 等都有体现, 现实中这个功能也方便了我们的吃穿住行, 比如我们普通大众经常使用的附近的人附近的餐厅等就是基于这个功能来实现, 其可以应用到以下相关功能: 商店: 找到你当前的位置; 社交: 找到你附近的朋友; 地图: 找到附近感兴趣的地方; 从这方面来看, 如何找到当前的位置是我们的首要任务, 庆幸的是现今的很多 gps 设备可以完成该任务, 比如我们常用的手机打开 gps 功能后, 相关的 app 即可获取到经纬度地理位置信息, 我们通过经纬度即可计算出相应的地理位置, 再就是计算两个经纬度之间的距离, 等等. 其背后的技术实现值得我们持续深入的学习下去,下文会简单介绍地理位置实现的方式, 后面则着重介绍如何使用 MySQL 实现附近的人的功能. 经纬度 详见: 经纬度 首先了解经纬度需要学习下地理知识, 经纬度是经度与纬度的合称组成的坐标系统, 称为地理坐标系统, 他是利用三度空间的球面来定义地球上的空间的球面坐标系统, 能够标示地球上的任意一个位置. 如下图所示: 纬线和经线都是人类为度量方便而假设处理的辅助线. 纬线 纬线定义为地球表面某店随地球自转所形成的轨迹, 如上图所示, 任何一根纬线都是圆形而且两两平行. 纬线的长度时赤道的周长诚意纬线的纬度的余弦. 经线 经线也称子午线, 定义为地球表面连接南北两极的大圆线上的半圆弧. 任两根经线的长度相等,相交于南北两极点, 每一根经线都有其相对应的数值,称为经度, 经线指示南北方向。 距离计算… Read More »

memcached 内存分配及性能优化

By | 2016/12/07

memcached 介绍 memcached 是一个基于内存, 通过 key-value 方式访问和存储数据的工具. 一般通过缓存数据库查询和 api 调用等不经常变更的结果来减少程序直接访问数据库或 api 服务的次数, 进而提高动态 web 应用的性能; 由于 memcached 基于内存存储, 并没有持久化到硬盘中, 所以重启 memcached 或主机的操作会引起数据的丢失. 另外数据达到指定的内存值后, memcached 则采用基于 LRU(least recently used)算法自动删除不使用的缓存. 更具体的则包含以下特性: 协议简单(ascii 或 binary 协议) 基于 libevent 事件处理 内置的内存存储方式 不互相通信的分布式(由客户端程序负责分布式) memcached 事件模型 memcached 使用 libevent 作为其底层的网络库, 不过 libevent 将 Linux 类操作系统的 epoll, BSD 类操作系统的 kqueue 等事件处理功能封装成统一了接口, 即使服务器的连接数增加也能很好的达到… Read More »

raid 控制器对系统性能的影响

By | 2016/11/21

raid 控制器对系统性能的影响 raid 控制器介绍 raid 控制器的初衷设计是为了提高系统的性能, 通过管理将一组磁盘当做一个逻辑的单元进行处理, 进而使得系统更加稳定, 而且也具备了容错特性. 大多数企业的基础设施都以 raid 控制器作为保护磁盘数据的解决方案, 并提供更高的读写IO. 更多介绍见 intel 官方站点: intel-raid-controllers 不过在一般业务系统中, 我们通常使用 raid 控制器来满足数据的一致性需求. 最常见的则是在数据库系统中, 在是否使用 raid 以及使用那种 raid 的情况下, 数据的读写以及数据的一致性都会有很大的差别, 不同的 raid 级别见 Standard_RAID_levels 不同策略对系统的影响 本文我们主要以 dell perc 系列的 raid 控制器介绍不同策略对系统性能以及数据一致性的影响. 主要通过以下几方面介绍不同策略对系统性能的影响: raid write policy disk cache read ahead policy I/O policy strip size raid write policy… Read More »