Go语言是谷歌2009发布的第二款开源编程语言。
Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
因而一直想的是自己可以根据自己学习和使用Go语言编程的心得,写一本Go的书可以帮助想要学习Go语言的初学者快速入门开发和使用!
TiDB 是 PingCAP 公司受 Google Spanner F1
论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing)
数据库,结合了传统的 RDBMS 和NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP(Online Transactional Processing)
和 OLAP (Online Analytical Processing)
场景提供一站式的解决方案。
TiDB支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。 TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。
在使用TiDB的时候首先要搭建集群,看了下官网有三种部署方法。(Ansible 部署方案),Docker部署方案,Binary部署方案。目前我这里是用了 Docker部署方案和Binary部署方案安装部署的TiDB集群.一个完整的TiDB集群包括 PD,TiKV 以及 TiDB。启动顺序依次是 PD,TiKV 以及 TiDB。
这里有三点需要注意的:
-
快速了解和试用 TiDB,推荐使用单节点方式快速部署。
-
功能性测试 TiDB,推荐使用功能性测试部署。
-
生产环境使用 TiDB,推荐使用多节点集群模式部署。
首先安装docker环境,这个可以根据电脑系统的不同,选择不同的安装方式。
不过我这里是用脚本直接在centos上直接安装的docker和docker-compose:
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo;
yum-config-manager --enable docker-ce-edge;
yum-config-manager --disable docker-ce-edge;
yum install docker-ce;
systemctl start docker.service;
systemctl enable docker.service;
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose;
docker-compose --version;
这里需要拉取TiDB的三个镜像,TiDB, TiKV , PD ,因为TiDB集群部署主要包括这三个服务组件.
- TiDB Server
TiDB Server
负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。 TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。
- PD Server
Placement Driver
(简称 PD) 是整个集群的管理模块,其主要工作有三个: 一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。
PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。
- TiKV Server
TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range (从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region 。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group
,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。
然后拉取Docker最新镜像可以通过Docker官方镜像仓库获取:
docker pull pingcap/tidb:latest
docker pull pingcap/tikv:latest
docker pull pingcap/pd:latest
这里配置5台机器配置如下:
组件 | CPU | 内存 | 实例数量 |
---|---|---|---|
TiDB | 8核 | 32 GB | 1 |
PD | 8核 | 32 GB | 2 |
TiKV | 8核 | 32 GB | 3 |
然后配置了这样的TiDB集群:
| 主机名 | IP | 部署服务 | 数据盘挂载 | | ---------- | ------------------------------- |-----------| | host1 | 120.92.150.39 | PD1 & TiDB | /data | | host2 | 120.92.163.32 | PD2 | /data | | host3 | 120.92.172.35 | TiKV1 | /data | | host4 | 120.92.169.191| TiKV2 | /data | | host5 | 120.92.165.229| TiKV3 | /data |
然后需要在host1上配置下免密登录:
> ssh-keygen -t rsa
> ls -la .ssh
总用量 16
drwx------ 2 usera usera 4096 7月 23 09:22 .
drwxrwx--- 12 usera usera 4096 7月 23 09:22 ..
-rw------- 1 usera usera 1675 7月 23 09:22 id_rsa
-rw-r--r-- 1 usera usera 399 7月 23 09:22 id_rsa.pub
此时会在/.ssh
目录下生成密钥对,然后将公钥上传到其他主机上 服务器的,并以userb用户登录.
> ssh-copy-id .ssh/id_rsa.pub root@120.92.163.32
> ssh-copy-id .ssh/id_rsa.pub root@120.92.172.35
> ssh-copy-id .ssh/id_rsa.pub root@120.92.169.191
> ssh-copy-id .ssh/id_rsa.pub root@120.92.165.229
这样我们就可以使用免密登录了:
> ssh root@120.92.163.32
> ssh root@120.92.172.35
> ssh root@120.92.169.191
> ssh root@120.92.165.229
除此之外也可以用scp命令实现,但是有点麻烦:
> scp -P 22 ~/.ssh/id_rsa.pub root@120.92.163.32:~/
> scp -P 22 ~/.ssh/id_rsa.pub root@120.92.172.35:~/
> scp -P 22 ~/.ssh/id_rsa.pub root@120.92.169.191:~/
> scp -P 22 ~/.ssh/id_rsa.pub root@120.92.165.229:~/
登录 host1 执行:
> docker run -d --name pd1 \
-p 2379:2379 \
-p 2380:2380 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/pd:latest \
--name="pd1" \
--data-dir="/data/pd1" \
--client-urls="http://0.0.0.0:2379" \
--advertise-client-urls="http://120.92.150.39:2379" \
--peer-urls="http://0.0.0.0:2380" \
--advertise-peer-urls="http://120.92.150.39:2380" \
--initial-cluster="pd1=http://120.92.150.39:2380,pd2=http://120.92.163.32:2380"
登录 host2 执行:
> docker run -d --name pd2 \
-p 2379:2379 \
-p 2380:2380 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/pd:latest \
--name="pd2" \
--data-dir="/data/pd2" \
--client-urls="http://0.0.0.0:2379" \
--advertise-client-urls="http://120.92.163.32:2379" \
--peer-urls="http://0.0.0.0:2380" \
--advertise-peer-urls="http://120.92.163.32:2380" \
--initial-cluster="pd1=http://120.92.150.39:2380,pd2=http://120.92.163.32:2380"
登录 host3 执行:
> docker run -d --name tikv1 \
-p 20160:20160 \
--ulimit nofile=1000000:1000000 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/tikv:latest \
--addr="0.0.0.0:20160" \
--advertise-addr="120.92.172.35:20160" \
--data-dir="/data/tikv1" \
--pd="120.92.150.39:2379,120.92.163.32:2379"
登录 host4 执行:
> docker run -d --name tikv2 \
-p 20160:20160 \
--ulimit nofile=1000000:1000000 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/tikv:latest \
--addr="0.0.0.0:20160" \
--advertise-addr="120.92.169.191:20160" \
--data-dir="/data/tikv2" \
--pd="120.92.150.39:2379,120.92.163.32:2379"
登录 host5 执行:
> docker run -d --name tikv3\
-p 20160:20160 \
--ulimit nofile=1000000:1000000 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/tikv:latest \
--addr="0.0.0.0:20160" \
--advertise-addr=" 120.92.165.229:20160" \
--data-dir="/data/tikv2" \
--pd="120.92.150.39:2379,120.92.163.32:2379"
登录 host1 执行:
docker run -d --name tidb \
-p 4000:4000 \
-p 10080:10080 \
-v /etc/localtime:/etc/localtime:ro \
pingcap/tidb:latest \
--store=tikv \
--path="120.92.150.39:2379,120.92.163.32:2379"
登录 host1并确保已安装 MySQL 命令行客户端,执行:
$ mysql -h 127.0.0.1 -P 4000 -u root -D test
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| INFORMATION_SCHEMA |
| PERFORMANCE_SCHEMA |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
除了上面Docker安装部署,我们也可以用Binary安装和部署TiDB集群.
用Binary部署TiDB需要下载对应的压缩包:
在centos上可以用:
> wget http://download.pingcap.org/tidb-latest-linux-amd64.targz
> wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256
然后检查文件完整性,返回 ok 则正确.
> sha256sum -c tidb-latest-linux-amd64.sha256
解开压缩包:
> tar -xzf tidb-latest-linux-amd64.tar.gz cd tidb-latest-linux-amd64
我们可以在单机上面,运行和测试 TiDB 集群,请按如下步骤依次启动 PD,TiKV,TiDB.
#启动 PD
> ./bin/pd-server --data-dir=/data/tidb/pd \
--log-file=pd.log
#启动 TiKV
> ./bin/tikv-server --pd="127.0.0.1:2379" \
--data-dir=/data/tidb/pd \
--log-file=tikv.log
#启动 TiDB
> ./bin/tidb-server --store=tikv \
--path="127.0.0.1:2379" \
--log-file=tidb.log
#使用官方的 mysql 客户端连接 TiDB
> mysql -h 127.0.0.1 -P 4000 -u root -D test
#多节点集群模式部署
这里我用了和上面Docker部署一样的5台服务器,2个PD,1个TiDB,和3个TiKV来部署TiDB集群.
主机名 | IP | 部署服务 | 数据盘挂载 |
---|---|---|---|
host1 | 120.92.150.39 | PD1 & TiDB | /data |
host2 | 120.92.163.32 | PD2 | /data |
host3 | 120.92.172.35 | TiKV1 | /data |
host4 | 120.92.169.191 | TiKV2 | /data |
host5 | 120.92.165.229 | TiKV3 | /data |
# 在 host1,host2上依次启动 PD:
> ./bin/pd-server --name=pd1 \
--data-dir=/data/tidb/pd1 \
--client-urls="http://120.92.150.39:2379" \
--peer-urls="http://120.92.150.39:2380" \
--initial-cluster="pd1=http://120.92.150.39:2380,pd2=http://120.92.163.32:2380" \
--log-file=pd1.log
> ./bin/pd-server --name=pd2 \
--data-dir=/data/tidb/pd2 \
--client-urls="http://120.92.163.32:2379" \
--peer-urls="http://120.92.163.32:2380" \
--initial-cluster="pd1=http://120.92.150.39:2380,pd2=http://120.92.163.32:2380" \
--log-file=pd2.log
# 在 host3,host4,host5上启动 TiKV
> ./bin/tikv-server --pd="120.92.150.39:2379,120.92.163.32:2379" \
--addr="120.92.172.35:20160" \
--data-dir=/data/tidb/tikv1 \
--log-file=tikv1.log
> ./bin/tikv-server --pd="120.92.150.39:2379,120.92.163.32:2379" \
--addr="120.92.169.191:20160" \
--data-dir=/data/tidb/tikv2 \
--log-file=tikv2.log
> ./bin/tikv-server --pd="120.92.150.39:2379,120.92.163.32:2379" \
--addr="120.92.165.229:20160" \
--data-dir=/data/tidb/tikv3 \
--log-file=tikv3.log
# 在 host1上启动 TiDB
> ./bin/tidb-server --store=tikv \
--path="120.92.150.39:2379" \
--log-file=tidb.log
# 使用官方 mysql 客户端连接 TiDB
> mysql -h 120.92.150.39 -P 4000 -u root -D test
注意:在生产环境中启动 TiKV时,建议使用--config参数指定配置文件路径。
如果使用 nohup 在生产环境中启动集群,需要将启动命令放到一个脚本文件里面执行,否则会出现因为 Shell 退出导致 nohup 启动的进程也收到异常信号退出的问题,具体参考进程异常退出。 功能性测试部署.
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。
sysbench主要测试方式包括:
- cpu性能
- 磁盘io性能
- 调度程序性能
- 内存分配及传输速度
- POSIX线程性能
- 数据库性能(OLTP基准测试)
sysbench的数据库OLTP测试支持MySQL、PostgreSQL、Oracle,目前主要用于Linux操作系统,开源社区已经将sysbench移植到了Windows,并支持SQL Server的基准测试。
本次安装是在服务器centos7.0上进行的,安装方式主要有两种:
- 可以直接yum -y install sysbench.
> yum -y install sysbench
> yum -y install automake
> yum -y install libtool
> sysbench --version
sysbench 1.0.9
> cd /tmp/sysbench-0.4.12-1.1
> ./autogen.sh
> ./configure && make
# 如果make没有报错,就会在sysbench目录下生成二进制命令行工具 sysbench
ls -l sysbench
-rwxr-xr-x 1 root root 3297149 9月 14 sysbench
这里安装的时候需要去tidb-bench拉取代码.然后你可以直接上传到服务器上:
scp tidb-bench-master.zip root@120.92.172.35:~/
或者你也可以直接把代码拉取到你要测试的服务器上.
接下来就是真正意义上的测试了,这里你需要先使用MySQL标准客户端连接 TiDB
> mysql -h 120.92.150.39 -P 4000 -u root -D test
> create database sbtest1;
然后你就需要用到刚刚获取的beanch的代码了:
> cd ~/tidb-bench-master/sysbench
修改conf.sh:
> cat conf.sh
. ./conf.sh
host=127.0.0.1
port=4000
user=root
password=
tcount=16
tsize=1000000
threads=256
dbname=sbtest1
interval=10
maxtime=600
requests=2000000000
driver=mysql
详解:
- --test=tests/db/oltp.lua 表示调用 tests/db/oltp.lua 脚本进行 oltp 模式测试.
- --oltp_tables_count=16 表示会生成16张测试表 .
- --oltp-table-size=500000 表示每张测试表填充数据量为500000 --rand-init=on 表示每张测试表都是用随机数据来填充的.
如果在本机,也可以使用 –mysql-socket 指定 socket 文件来连接。加载测试数据时长视数据量而定,若过程比较久需要稍加耐心等待。 真实测试场景中,数据表建议不低于10个,单表数据量不低于500万行,当然了,要视服务器硬件配置而定。如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,则建议单表数据量最少不低于1亿行。
测试运行:
> ./prepare.sh
执行完成后,生成16张测试表,每张表500000条数据。
开始测试 OLTP,这里解释写关于里面的参数:
- --num-threads=256 表示发起 256 个并发连接.
- --oltp-read-only=off 表示不要进行只读测试也就是会采用读写混合模式测试.
- --report-interval=10 表示每10秒输出一次测试进度报告.
- --rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托).
- --max-time=600 表示最大执行时长为 600 秒.
- --max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长.
- --percentile=95 表示设定采样比例,默认是 95%,即丢弃5%的长请求,在剩余的95%里取最大值.
模拟 对256个表并发OLTP测试,每个表500000行记录,持续压测时间为10分钟。 真实测试场景中,建议持续压测时长不小于30分钟,否则测试数据可能不具参考意义。
> ./oltp.sh
+ sysbench --test=./lua-tests/db/oltp.lua --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=4000 --mysql-user=root --mysql-password= --mysql-db=sbtest1 --oltp-tables-count=16 --oltp-table-size=1000000 --num-threads=256 --max-requests=2000000000 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=600 --percentile=95 run
oltp 测试结果如下:
sysbench 1.0.9 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 256
Report intermediate results every 10 second(s)
Initializing random number generator from current time
-- 每10秒钟报告一次测试结果,tps、每秒读、每秒写、99%以上的响应时长统计
[ 580s ] thds: 256 tps: 721.70 qps: 14451.55 (r/w/o: 10116.46/2890.59/1444.49) lat (ms,95%): 404.61 err/s: 0.00 reconn/s: 0.00
[ 590s ] thds: 256 tps: 717.67 qps: 14343.25 (r/w/o: 10038.02/2869.89/1435.35) lat (ms,95%): 427.07 err/s: 0.00 reconn/s: 0.00
[ 600s ] thds: 256 tps: 731.61 qps: 14657.79 (r/w/o: 10265.53/2931.24/1461.02) lat (ms,95%): 404.61 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 5846120 -- 读总数
write: 1670320 -- 写总数
other: 835160 -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)
total: 8351600 -- 全部总数
transactions: 417580 (693.25 per sec.) -- 总事务数(每秒事务数)
queries: 8351600 (13864.98 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 602.3476s -- 总耗时
total number of events: 417580 -- 共发生多少事务数
Latency (ms):
min: 25.62 -- 最小耗时
avg: 367.90 -- 平均耗时
max: 5886.23 -- 最长耗时
95th percentile: 442.73
sum: 153666263.39
Threads fairness:
events (avg/stddev): 749.0078/2.01
execution time (avg/stddev): 600.2588/0.17
测试 select:
> ./select.sh
+ sysbench --test=./lua-tests/db/select.lua --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=4000 --mysql-user=root --mysql-password= --mysql-db=sbtest1 --oltp-tables-count=16 --oltp-table-size=1000000 --num-threads=256 --report-interval=10 --max-requests=2000000000 --percentile=95 --max-time=600 run
select 测试结果如下:
[ 550s ] thds: 256 tps: 9072.09 qps: 9072.09 (r/w/o: 9072.09/0.00/0.00) lat (ms,95%): 51.94 err/s: 0.00 reconn/s: 0.00
[ 560s ] thds: 256 tps: 7348.60 qps: 7348.60 (r/w/o: 7348.60/0.00/0.00) lat (ms,95%): 69.29 err/s: 0.00 reconn/s: 0.00
[ 570s ] thds: 256 tps: 7644.35 qps: 7644.35 (r/w/o: 7644.35/0.00/0.00) lat (ms,95%): 63.32 err/s: 0.00 reconn/s: 0.00
[ 580s ] thds: 256 tps: 7989.24 qps: 7989.24 (r/w/o: 7989.24/0.00/0.00) lat (ms,95%): 61.08 err/s: 0.00 reconn/s: 0.00
[ 590s ] thds: 256 tps: 8266.79 qps: 8266.79 (r/w/o: 8266.79/0.00/0.00) lat (ms,95%): 58.92 err/s: 0.00 reconn/s: 0.00
[ 600s ] thds: 256 tps: 8126.22 qps: 8126.22 (r/w/o: 8126.22/0.00/0.00) lat (ms,95%): 61.08 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 5071951
write: 0
other: 0
total: 5071951
transactions: 5071951 (8451.70 per sec.)
queries: 5071951 (8451.70 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 600.1084s
total number of events: 5071951
Latency (ms):
min: 2.87
avg: 30.28
max: 369.50
95th percentile: 55.82
sum: 153576184.73
Threads fairness:
events (avg/stddev): 19812.3086/50.79
execution time (avg/stddev): 599.9070/0.04
测试 insert:
> ./insert.sh
+ sysbench --test=./lua-tests/db/insert.lua --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=4000 --mysql-user=root --mysql-password= --mysql-db=sbtest1 --oltp-tables-count=16 --oltp-table-size=1000000 --num-threads=256 --report-interval=10 --max-requests=2000000000 --percentile=95 --max-time=600 run
insert 测试结果如下:
[ 550s ] thds: 256 tps: 3084.73 qps: 3084.73 (r/w/o: 0.00/3084.73/0.00) lat (ms,95%): 110.66 err/s: 0.00 reconn/s: 0.00
[ 560s ] thds: 256 tps: 3164.70 qps: 3164.70 (r/w/o: 0.00/3164.70/0.00) lat (ms,95%): 104.84 err/s: 0.00 reconn/s: 0.00
[ 570s ] thds: 256 tps: 3118.42 qps: 3118.42 (r/w/o: 0.00/3118.42/0.00) lat (ms,95%): 108.68 err/s: 0.00 reconn/s: 0.00
[ 580s ] thds: 256 tps: 3251.01 qps: 3251.01 (r/w/o: 0.00/3251.01/0.00) lat (ms,95%): 101.13 err/s: 0.00 reconn/s: 0.00
[ 590s ] thds: 256 tps: 3109.42 qps: 3109.42 (r/w/o: 0.00/3109.42/0.00) lat (ms,95%): 106.75 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 0
write: 1765555
other: 0
total: 1765555
transactions: 1765555 (2942.26 per sec.)
queries: 1765555 (2942.26 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 600.0653s
total number of events: 1765555
Latency (ms):
min: 34.19
avg: 86.99
max: 927.90
95th percentile: 114.72
sum: 153582581.05
Threads fairness:
events (avg/stddev): 6896.6992/13.22
execution time (avg/stddev): 599.9320/0.05
测试 delete:
> ./delete.sh
+ sysbench --test=./lua-tests/db/delete.lua --db-driver=mysql --mysql-host=127.0.0.1 --mysql-port=4000 --mysql-user=root --mysql-password= --mysql-db=sbtest1 --oltp-tables-count=16 --oltp-table-size=1000000 --num-threads=256 --report-interval=10 --max-requests=2000000000 --max-time=600 --percentile=95 run
delete 测试结果如下:
[ 550s ] thds: 256 tps: 6291.62 qps: 6291.62 (r/w/o: 0.00/1284.15/5007.48) lat (ms,95%): 99.33 err/s: 0.00 reconn/s: 0.00
[ 560s ] thds: 256 tps: 6294.83 qps: 6294.83 (r/w/o: 0.00/1278.81/5016.02) lat (ms,95%): 99.33 err/s: 0.00 reconn/s: 0.00
[ 570s ] thds: 256 tps: 6161.33 qps: 6161.33 (r/w/o: 0.00/1252.58/4908.75) lat (ms,95%): 97.55 err/s: 0.00 reconn/s: 0.00
[ 580s ] thds: 256 tps: 6190.38 qps: 6190.48 (r/w/o: 0.00/1244.62/4945.86) lat (ms,95%): 97.55 err/s: 0.00 reconn/s: 0.00
[ 590s ] thds: 256 tps: 6278.86 qps: 6278.76 (r/w/o: 0.00/1279.15/4999.61) lat (ms,95%): 99.33 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 0
write: 887497
other: 2589396
total: 3476893
transactions: 3476893 (5793.68 per sec.)
queries: 3476893 (5793.68 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 600.1166s
total number of events: 3476893
Latency (ms):
min: 5.06
avg: 44.17
max: 5644.54
95th percentile: 102.97
sum: 153575902.59
Threads fairness:
events (avg/stddev): 13581.6133/78.13
execution time (avg/stddev): 599.9059/0.05