mysql 容量评估_网易MySQL微专业学习笔记(十二)-MySQL容量评估

前言

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL业务优化与设计”中的MySQL数据类型相关笔记。

所有笔记可能不定期更新,发布时不一定为最终版。

35dcb9b7472ef9ce28c5f14912da8bf4.png

正文

性能容量评估

分析线上业务场景

评估数据库服务器所需性能指标

预估可能成为瓶颈的服务器资源

帮助数据库性能调优

数据库服务器硬件性能指标

磁盘IO性能

内存容量

CPU

网络吞吐量

磁盘容量

数据库业务特点关键词

OLTP/OLAP类型

并发请求

读写比例

数据量

冷热数据比

数据分级存储

OLTP与OLAP

T = Transaction

面向广大用户,高并发,较短事务操作

互联网应用绝大部分属于OLTP

OLTP看重服务器CPU,内存,些事务较多或内存不够则依赖磁盘IO

A =Analytical

通常面向内部人员,大规模复杂查询

OLAP看重磁盘扫描的IO能力,部分依赖内存排序。

并发请求-衡量线上业务繁忙程度

业务高峰时数据库的每秒并发访问量是多少

通过应用服务器数量,连接池配置判断

通过产品估算初上线用户规模和用户增长速度

通过实际业务业务类型判断

并发量相关资源:CPU

读写比例-描述应用程序如何使用数据库

线上业务select只读与update/delete/insert写操作比例

delete/update通常都是先读再写

insert需要分区数据写入是持续insert还是大量导入数据

根据业务实际场景分析

多数场景相关资源:内存

多写场景相关资源:磁盘IO

数据量-总量

数据库服务器存储设备可扩容能力上限

根据估算的业务量,写入模式,分析数据增长量

预估一个硬件升级周期内数据库可存放数据的总量,上线时要留好余量

数据总量相关资源:磁盘容量

冷数据与热数据-有用数据的实时集合

热数据,线上最新一定周期内将被反复访问的数据

冷数据,线上保存着的,最近不会被在线用户用到的数据

估算活跃用户量,数据增长量等预估热数据量

内存大小尽可足够存放线上实时热数据。

热数据相关资源:内存

MySQL性能测试

为什么需要做性能测试

对线上产品缺乏心里预估

重现线上异常

规划未来的业务增长

测试不同硬件软件配置

性能测试的分类

设备层的测试

业务层的测试

数据库层的测试

设备层的测试

关注那些性能

服务器、磁盘性能

磁盘坏块率

服务器寿命

业务层的测试

真的业务进行测试

数据库层的测试

什么情况下要做MySQL的测试

测试不同的MySQL分支版本

测试不同的MySQL版本

测试不同的Mysql参数搭配

MySQL测试分类

CPU Bound

全内存的测试,测试的数据远小于配置的内存;这样就可以不用因为磁盘IO的性能不同,而影响测试结果。

IO Bound

测试的数据量远大于内存,这就有大量的数据从磁盘IO读取写入;

远大于内存

每个均包含:

写入测试

更新测试

纯读测试

混合模式

以上三种都有。

常用的测试工具

开源的MySQL性能测试工具

sysbench

tpcc-mysql

mysqlslap

性能测试衡量指标

服务吞吐量(TPS,QPS)

TPS:每秒钟执行的事务量

QPS:每秒钟执行的请求量

若一个事务中包含10个请求,每秒钟可执行10个事务

则,TPS为10,QPS为10*10=100

服务响应时间

服务并发性

Sysbench

业界较为出名的性能测试工具

可以测试磁盘、CPU、数据库

支持多种数据库:Oracle、DB2、MySQL

需要自己下载编译安装

建议版本Sysbench0.5

编译Sysbench

1)下载sysbench

git clone https://github.com/akopytov/sysbench.git

2)编译&安装

./autogen.sh

./configure --prefix=/home/ddb/tmp/sysbench

make && make install

3)./sysbench --help

4)初始化数据

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 prepare

5)运行测试

sysbench --test=oltp.lua --oltp_tables_count=1 --num-threads=100 --oltp-table-size=500000000 --oltp-read-only=off --report-interval=10 --rand-type=uniform --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-time=1000 --max-requests=0 run

6)数据清理

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 cleanup

Sysbench流程

初始化数据-》运行测试-》清理数据

Prepare语法--初始化数据

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 prepare

--oltp-table-size 多少行记录

Run语法-运行测试

sysbench --test=oltp.lua --oltp_tables_count=1 --num-threads=100 --oltp-table-size=500000000 --oltp-read-only=off --report-interval=10 --rand-type=uniform --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-time=1000 --max-requests=0 run

cleanup

1、手动drop掉表和datebase

2、使用syschench提供的cleanup命令

sysbench --test=parallel_prepare.lua --oltp_tables_count=1 --rand-init=on --oltp-table-size=500000000 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=sys --mysql-password=netease --mysql-db=sbtest --max-requests=0 cleanup

Tpcc-mysql

TPC-C是专门针对练级交易处理系统(OLTP系统)的规范

Tpcc-mysql由percona根据规范实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值