压测

1.查看机器负载load
  • top - load average 1m 5m 15m
  • cat /proc/loadavg
  • 与CPU个数有关,1个load表示1个CPUcat /proc/cpuinfo |grep processor
2.CPU使用率
  • top us sy id wa hi si st
  • cat /proc/stat
3.QPS
  • SSD查询QPS约2w
  • 评估qps=(总pv * 80%)/(24 * 60 * 60 * 20%)
  • 机器数=总qps/单台机器极限qps
sysbench
  • 1.安装
wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
unzip sysbench-1.0.zip
cd sysbench-1.0
yum install automake libtool -y
export LD_LIBRARY_PATH=/usr/local/mysql/lib
./autogen.sh
./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/
make && make install
  • 2.创建测试表
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/select.lua \
--oltp-table-size=20000 --mysql-table-engine=innodb --mysql-user=root --mysql-password=123456 \
--mysql-port=3306 --mysql-host=localhost --mysql-db=test --max-requests=0 --max-time=60 \
--oltp-tables-count=20 --report-interval=10 --num_threads=2 prepare
sysbench --test=oltp --oltp_tables_count=10 --oltp-table-size=100000 --mysql-user=root --mysql-password=123456 --num-threads=20 --max-time=120 --max-requests=0 --oltp-test-mode=complex prepare
#-test=tests/db/oltp.lua 表示调用 tests/db/oltp.lua 脚本进行 oltp 模式测试
#--oltp_tables_count=10 表示会生成 10 个测试表
#--oltp-table-size=100000 表示每个测试表填充数据量为 100000
#--rand-init=on 表示每个测试表都是用随机数据来填充的
#-num-threads=8 表示发起 8个并发连接
#--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试
#--report-interval=10 表示每10秒输出一次测试进度报告
#--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)
#--max-time=120 表示最大执行时长为 120秒
#--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长
#--percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值
  • 3.开始测试
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/select.lua \
--oltp-table-size=20000 --mysql-table-engine=innodb --mysql-user=root --mysql-password=123456 \
--mysql-port=3306 --mysql-host=localhost --mysql-db=test --max-requests=0 --max-time=60 \
--oltp-tables-count=20 --report-interval=10 --num_threads=2 run
-------- -----load-avg---- ---cpu-usage--- ---swap---                     -QPS- -TPS-         -Hit%- ------threads------
time | 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| run con cre cac|
20:12:09| 0.02 0.05 0.12| 1 2 97 0| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 1|
20:12:12| 0.02 0.05 0.12| 1 1 98 0| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 1|
20:12:15| 0.02 0.05 0.12| 29 7 64 0| 0 0| 0 0 0 1822 0| 3855 100.00| 1 3 0 0|
20:12:18| 0.25 0.10 0.14| 85 15 0 0| 0 0| 0 0 0 5015 0| 10536 100.00| 1 3 0 0|
20:12:21| 0.25 0.10 0.14| 85 15 0 0| 0 0| 0 0 0 5427 0| 11394 100.00| 1 3 0 0|
20:12:25| 0.55 0.16 0.16| 83 17 0 0| 0 0| 0 0 0 5199 0| 10879 100.00| 1 3 0 0|
20:12:28| 0.75 0.21 0.17| 86 14 0 0| 0 0| 0 0 0 5290 0| 11116 100.00| 1 3 0 0|
20:12:31| 0.75 0.21 0.17| 76 24 0 0| 0 0| 0 0 0 4403 0| 9281 100.00| 1 3 0 0|
20:12:34| 1.01 0.27 0.20| 74 26 0 0| 0 0| 0 0 0 4808 0| 10093 100.00| 1 3 0 0|
20:12:38| 1.09 0.30 0.20| 82 18 0 0| 0 0| 0 0 0 5214 0| 10882 100.00| 1 3 0 0|
20:12:41| 1.09 0.30 0.20| 83 17 0 0| 0 0| 0 0 0 5146 0| 10782 100.00| 1 3 0 0|
20:12:44| 1.24 0.35 0.22| 82 18 0 0| 0 0| 0 0 0 5277 0| 11120 100.00| 1 3 0 0|
20:12:47| 1.24 0.35 0.22| 83 17 0 0| 0 0| 0 0 0 5415 0| 11423 100.00| 1 3 0 0|
20:12:50| 1.38 0.39 0.24| 83 17 0 0| 0 0| 0 0 0 5522 0| 11559 100.00| 1 3 0 0|
20:12:54| 1.51 0.43 0.25| 83 17 0 0| 0 0| 0 0 0 5476 0| 11480 100.00| 1 3 0 0|
  • 1m超过1代表CPU使用量超过1
  • usr代表用户使用CPU百分比
  • QPS的sel代表select DML,极限在5000左右

http://blog.csdn.net/oahz4699092zhao/article/details/53332105

4.TPS
  • DML的表现,每秒事务数
  • 可以用olut.lua脚本随机压测
-------- -----load-avg---- ---cpu-usage--- ---swap---                     -QPS- -TPS-         -Hit%- ------threads------
time | 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| run con cre cac|
00:09:42| 0.97 0.29 0.14| 2 2 96 0| 0 0| 0 0 0 0 0| 0 100.00| 0 0 0 0|
00:09:45| 0.98 0.30 0.14| 2 13 52 33| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 2|
00:09:48| 0.98 0.30 0.14| 2 9 76 13| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 2|
00:09:52| 1.06 0.33 0.15| 4 18 43 35| 0 0| 0 0 0 0 0| 49 100.00| 1 1 0 2|
00:09:55| 1.06 0.33 0.15| 18 22 34 26| 0 0| 15 31 15 220 62| 3322 100.00| 3 3 0 0|
00:09:58| 1.21 0.37 0.17| 19 25 28 29| 0 0| 18 36 18 257 73| 3912 100.00| 3 3 0 0|
00:10:01| 1.28 0.40 0.18| 20 32 17 31| 0 0| 17 34 17 243 69| 3600 100.00| 3 3 0 0|
00:10:04| 1.28 0.40 0.18| 16 25 31 27| 0 0| 15 30 15 210 60| 2756 100.00| 3 3 0 0|
00:10:07| 1.41 0.44 0.19| 23 32 27 18| 0 0| 20 40 20 285 81| 4518 100.00| 3 3 0 0|
00:10:10| 1.62 0.50 0.21| 20 30 30 21| 0 0| 20 40 20 285 81| 4040 100.00| 3 3 0 0|
00:10:13| 1.62 0.50 0.21| 22 30 22 26| 0 0| 19 39 19 280 79| 3540 100.00| 3 3 0 0|
00:10:17| 1.65 0.52 0.22| 16 24 32 28| 0 0| 15 30 15 210 61| 3112 100.00| 3 3 0 0|
00:10:20| 1.65 0.52 0.22| 21 25 38 15| 0 0| 21 42 21 299 85| 4237 100.00| 3 3 0 0|
00:10:23| 1.84 0.58 0.24| 19 21 43 17| 0 0| 20 40 20 285 81| 4069 100.00| 3 3 0 0|
00:10:26| 2.09 0.66 0.27| 20 22 35 23| 0 0| 20 41 20 290 82| 4736 100.00| 3 3 0 0|
-------- -----load-avg---- ---cpu-usage--- ---swap--- -QPS- -TPS- -Hit%- ------threads------
time | 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| run con cre cac|
00:10:29| 2.09 0.66 0.27| 21 22 34 24| 0 0| 21 43 21 304 86| 4324 100.00| 3 3 0 0|
00:10:32| 2.33 0.73 0.29| 18 20 39 24| 0 0| 18 36 18 257 73| 3739 100.00| 3 3 0 0|
00:10:35| 2.33 0.73 0.29| 22 24 33 22| 0 0| 23 46 23 327 93| 4719 100.00| 3 3 0 0|
00:10:38| 2.54 0.80 0.32| 19 22 41 19| 0 0| 20 41 20 290 82| 4186 100.00| 3 3 0 0|
00:10:41| 2.58 0.83 0.33| 22 23 36 19| 0 0| 22 44 22 308 88| 4458 100.00| 3 3 0 0|
00:10:44| 2.58 0.83 0.33| 19 23 32 26| 0 0| 20 40 20 285 81| 4166 100.00| 3 3 0 0|
00:10:47| 2.61 0.87 0.35| 19 24 36 22| 0 0| 22 45 22 318 90| 4448 100.00| 3 3 0 0|
00:10:50| 2.72 0.92 0.37| 24 26 36 14| 0 0| 28 56 28 397 113| 6076 100.00| 3 3 0 0|
00:10:54| 2.72 0.92 0.37| 12 16 55 18| 0 0| 12 24 12 173 49| 2718 100.00| 1 1 0 2|
00:10:57| 2.66 0.94 0.37| 3 36 48 13| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 2|

分表分库索引设计

1.订单主键ID
  • (1)长度26位(170325131201 000000010 01 01)
  • (2)格式:[yyMMddHHmmss(12位)] [循环递增序列(9位)] [库序号(2位)] [表序号(2位)]
  • (3)中间变量=userID%(库数量 * 每个库的表数量)
  • (4)库序号=中间变量 / 每个库的表数量
  • (5)标序号=中间变量 % 每个库的表数量
2.order_num唯一索引

有20%要通过order_num(订单号)查数据,请问order_num(订单号)要怎么设计才能快带找到订单记录是在哪个库的哪个表?

Twiiter全局唯一ID

  • (1)41位时间序列
  • (2)10位机器标识
  • (3)12位计数顺序号
  • (4)长度64位(41 + 10 + 12)

这个做订单号有点长

订单号
  • (1)求除得库号
  • (2)求模得表号

http://www.bubuko.com/infodetail-2152233.html

3.非主键索引

有10%是非主键字段(比如:字段、渠道、商品,档期,品牌,收件人信息、金额等字段)去查记录,非主键字段要怎么设计才能快带定位到记录?

还是通过二级索引找到主键索引在进行路由?

未完成

mysql小白系列_12 sysbench的更多相关文章

  1. mysql小白系列_13 Online DDL

    Online DDL: 一.FIC之前的添加删除二级索引: 1.首先创建临时表,定义目标新表的选项和索引 2.逐行拷贝数据到临时表 3.插入行时更新索引信息 4.数据全部被拷贝到新表后,删除旧表,re ...

  2. mysql小白系列_14 线上故障分析与排错

    1.重现故障5---线上执行update报错,并处理.(表结构和UPDATE语句自己构造,请给出详细步骤) 1)update故障出现ERROR 1206 (HY000): The total numb ...

  3. mysql小白系列_11 MHA

    一.MHA是什么?能干什么的 (1)以Perl语言写的一套Mysql故障切换方案,一个脚本管理工具 (2)保障数据库的高可用性 (3)修复多个slave之间的差异日志,最终使所有的slave保持数据一 ...

  4. mysql小白系列_10 mysql主从复制原理

    1.如何解决主从复制延迟的问题? (1)主从复制原理 http://www.cnblogs.com/jenvid/p/8410922.html 1.salve执行slave start,salve服务 ...

  5. mysql小白系列_09 mysql性能优化关键点

    一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis. ...

  6. mysql小白系列_08 zabbix添加自定义监控项items和触发器

    监控mysql存活 1.配置agent自定义参数 vi /usr/local/zabbix/etc/zabbix_agentd.conf Include=/usr/local/zabbix/etc/z ...

  7. mysql小白系列_08 zabbix3.2.6概念及部署

    一 zabbix功能简介 1.zabbix三大监控组件 zabbix server web gui database zabbix_server zabbix proxy agent client 2 ...

  8. mysql小白系列_07 锁与事务

    1.MySQL参数autocommit生产环境设1还是0?为什么? 2.MySQL参数tx_isolation生产环境上大多数是设什么值,为什么? 3.与MySQL锁相关的有哪些因素? 1.MySQL ...

  9. mysql小白系列_06 备份与恢复 - mydumper与myloader

    http://blog.csdn.net/leshami/article/details/46815553 https://www.cnblogs.com/zhoujinyi/p/3423641.ht ...

随机推荐

  1. 2019-2020-1 20199308《Linux内核原理与分析》第四周作业

    <Linux内核分析> 第三章 MenuOS的构造 3.1 Linux内核源代码简介 操作系统的"两把宝剑" 中断上下文:保存现场和恢复现场 进程上下文 目录结构 ar ...

  2. tomcat启动日志中中文乱码

    场景 使用catalina.bat start命令启动tomcat7 方案 打开%catalina_home%/conf/logging.properties文件. 将其中的UTF-8代换为GBK. ...

  3. 【JAVA基础】04 Java语言基础:方法

    1. 方法概述和格式说明 为什么要有方法 提高代码的复用性 什么是方法 完成特定功能的代码块. 方法的格式 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {     方法 ...

  4. 【DNS域名解析命令】 dig

    dig - DNS lookup utility dig 命令主要用来从 DNS 域名服务器查询主机地址信息. Dig (domain information groper 域名信息搜索)是一个灵活的 ...

  5. #if 和#ifdef的区别

    转自:https://blog.csdn.net/zhangchiytu/article/details/7563329 先看个例子:#define TARGET_LITTLE_ENDINA 1#de ...

  6. 学数据库你竟然不用用JAVA写代码,可惜你遇到了我! JAVA连接数据库(JDBC)的安装使用教程

    Step 1 你得有Eclipse 没有出门右拐,我教不了你. Step 2 你得有Mysql MySQL的详细安装过程,我在另一篇博客中给出.戳我 Step 3 安装JDBC 可以去官网下,如果用的 ...

  7. Acmer 仅以此纪念最痛苦的一天

    今天打比赛,完全不在状态,看到别人又AK了,自己心里真TM不是个滋味,我为什么这么弱,菜鸡,每天都在水题,我的人生也是这么水?伪学习?没有学习能力,这不只是队伍的问题,是自己的问题,别人平均3题我们队 ...

  8. NetCore项目实战篇03---HTTP Patch 更新数据

    一.什么是HTPP Patch HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 ...

  9. 关于2020.04.26【MySQL导出数据到文件中的方法】的补充

    之前导出的数据文件中没有表的列名,感觉不够完整,摸索一下发现带表列名导出也是可以的,只试了导出txt和csv两种文件类型的方法.       1.导出数据到txt文件中(包含数据表列名)的方法:先选择 ...

  10. 也谈解决Combobox绑定数据后取值出现System.Data.DataRowView的问题

    刚才遇到一个怪现象:同一个窗口,同一张表,通过第一个Combobox值的改变,动态绑定第二个Combobox,结果出现一个怪现象,第一个Combobox有的值改变第二个Combobox一切正常,有几个 ...