写点什么

别再猜了!用数据揭穿平凯数据库(TiDB 企业版)敏捷模式和 MySQL 的性能对比真相!

作者: jackyks 原文来源:https://tidb.net/blog/6b8c4304

TiDB 企业版(平凯数据库)敏捷模式性能测试

1. 测试目标

对平凯数据库(PingCAP TiDB)与 MySQL 数据库进行对比测试,重点评估两款数据库在企业级应用场景下的综合表现。测试涵盖 OLTP/OLAP 性能、数据压缩比、易用性、可扩展性和可靠性等关键指标。

2. 测试范围

  • 数据库版本:TiDB 企业版 (平凯数据库) v7.1.8-5.2 vs MySQL 8.0.41

  • 测试数据量:约 50GB

  • 测试模型:Sysbench OLTP、TPC-H OLAP、Sysbench 测试数据压缩比

3. 测试环境配置

3.1 硬件环境

3.2 软件环境


  • 说明:TEM、TiDB 集群 (伪集群,所有组件均部署在同一节点上) 、MySQL 均为 单节点

4. 环境部署

4.1 TEM 部署

(1)下载 TEM 安装包,并将安装包上传至服务器 192.168.18.180


(2)解压安装包


tar xvf tem-amd64.tar.gzcd tem-package-v3.0.0-linux-amd64
复制代码


(3)修改元数据库文件


# 修改文件名,TEM安装包解压后的文件为metadb_topology_template.yamlmv metadb_topology_template.yaml metadb_topology.yaml
# 修改配置文件中的IP,更换为TEM主机的IPvi metadb_topology.yaml
pd_servers: - host: 192.168.18.180 # 更换成部署 TEM 的主机 IP tidb_servers: - host: 192.168.18.180 # 同上 port: 4000
tikv_servers: - host: 192.168.18.180 # 同上
复制代码



(4)修改 TEM 配置文件


# 修改安装包中默认的配置文件config.yamlvi config.yaml
server_configs: # 这⾥指定 tem 节点的全局配置 tem_servers: db_addresses: "192.168.18.180:4000" # 填写上面metadb配置文件中的IP db_u: "root" # 若由 tem 辅助创建的元数据库,请使⽤ root ⽤户 db_pwd: "" # 若由 tem 辅助创建的元数据库,请使⽤空密码 db_name: "test" # 若由 tem 辅助创建的元数据库,请使⽤ test 数据库 log_filename: "/tem-deploy/tem-server-8080/log/tem.log" log_tem_level: "info" log_max_size: 300 log_max_days: 0 log_max_backups: 0 external_tls_cert: "" # tem 对外使用的tls证书 external_tls_key: "" # tem 对外使用的tls密钥 internal_tls_ca_cert: "" # tem 内部节点间双向验证使用的tls证书 internal_tls_cert: "" # tem 内部节点间双向验证使用的tls证书 internal_tls_key: "" # tem 内部节点间双向验证使用的tls证书
tem_servers: - host: "192.168.18.180" # 请填写 tem 节点的实际地址 port: 8080 mirror_repo: true # 是否开启镜像仓库,多个TEM节点时,有且仅有一个节点开启
复制代码



(5)开始安装


# 开始安装./install.sh
复制代码


  • 执行脚本后,约 1 分钟即可完成 TEM 安装



  • 访问 TEM


4.2 用 TEM 部署 TiDB 集群 (平凯数据库敏捷模式)

4.2.1 添加组件

TEM 设置 – 组件管理 – 添加组件,上传平凯数据库敏捷模式安装包。


  • tidb-ee-server-v7.1.8-5.2-20250630-linux-arm64.tar.gz tidb 服务整合包

  • tidb-ee-toolkit-v7.1.8-5.2-20250630-linux-arm64.tar.gz 相关工具整合包


4.2.2 添加凭证

TEM 设置 – 凭证 – 添加凭证,输入拟部署 TiDB 集群的服务器 (192.168.18.181)root 用户和密码。


4.2.3 配置中控机

TEM 主机 – 集群管理中控机 – 添加中控机


  • IP 地址:192.168.18.181

  • 名称:自定义

  • SSH 端口:中控机 SSH 端口,默认 22

  • 服务端口:中控机被控后提供服务的端口,默认 9090

  • 凭证:上一个步骤中添加的 SSH 登录凭证

  • 服务根目录:中控机被控后提供服务进程的安装目录,可设为 /root/tidb-cm-service

  • 是否自动安装 TiUP:建议安装

  • TiUP 镜像仓库:指定 TEM 使用的组件来源,仓库类型选 TEM 镜像仓库在“设置 -> 组件管理 -> 设置仓库地址”可以拿到仓库地址


4.2.4 配置集群主机

TEM 主机 – 主机 – 添加共享主机,此时添加的主机为部署 TiDB 集群的主机



  • 测试环境中,中控机和 TiDB 集群为同一台主机


4.2.5 创建集群

TEM 集群 – 创建集群。


  • 设置集群名称

  • 选择集群中控机



  • 选择集群版本:平凯 v7.1.8-5.2,敏捷模式

  • 选择部署模式:共享,并设置主机规格



  • 选择要安装的组件:PingKaiDB-1 个、TiFlash-1 个、Prometheus-1 个、Grafana-1 个、AlertManager-1 个




  • 选择默认的集群配置参数,并开始创建集群




  • 约 10 分钟,集群创建完成


4.2.6 优化集群参数

通过 TEM 登录 tidb 集群,在 SQL 编辑器,输入并执行 SQL 语句。



# 调整集群参数set global tidb_runtime_filter_mode=LOCAL;set global tidb_opt_enable_mpp_shared_cte_execution=on;set global tidb_rc_read_check_ts=on;set global tidb_analyze_skip_column_types="json,blob,mediumblob,longblob,mediumtext,longtext";set global tidb_enable_collect_execution_info=off;set global tidb_enable_instance_plan_cache=on;set global tidb_instance_plan_cache_max_size=2GiB;set global tidbx_enable_tikv_local_call=on;set global tidbx_enable_pd_local_call=on;set global tidb_schema_cache_size=0;
-- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例set global tidb_enable_slow_log=off;
复制代码

4.3 MySQL 部署

(1)安装 MySQL、设定用户


# 添加MySQL仓库dnf install https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpmdnf module disable mysql  # 禁用默认模块# 安装指定版本MySQLdnf install mysql-community-server-8.0.41-1.el8# 启动MySQLsystemctl start mysqld   # 启动MySQLsystemctl enable mysqld  # 设置开机启动systemctl status mysqld  # 检查状态# 登录MySQLmysql -u root -p  #第一次登录时会要求设置密码# 如没有,可在日志中查找临时密码grep 'temporary password' /var/log/mysqld.log# 修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';# 设置远程登录CREATE USER 'root'@'%' IDENTIFIED BY '密码';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;
复制代码


(2)优化 MySQL 参数


# 在/etc/my.cnf.d/mysql-server.cnf配置文件中增加如下参数[mysqld]innodb_buffer_pool_size = 12Ginnodb_flush_log_at_trx_commit = 0sync_binlog = 0local-infile = 1   # 支持本地文件导入
# innodb_buffer_pool_size = 64G # 建议设为物理内存的70-80%
复制代码

5. 安装性能测试工具

5.1 安装 Sysbench 工具

# 安装依赖包dnf install -y make automake libtool pkgconfig libaio-devel openssl-devel git# 下载tar.gz安装包git clone https://github.com/akopytov/sysbench.gittar xvf sysbench-1.0.20.tar.gxcd sysbench-1.0.20./autogen.sh./configure    # 默认支持MySQLmakemake install# 确认是否安装成功sysbench --version
复制代码


5.2 安装 TPC-H 工具

# 下载并上传TPC-H安装包下载地址:https://www.tpc.org/tpch/# 安装依赖包yum install -y gcc make unzip# 安装、配置TPC-Hunzip TPC-H-Tool.zipmv 'TPC-H V3.0.1' tpc-hcd tpc-h/dbgencp makefile.suite makefile# 修改makefile配置参数vi makefileCC      = gccDATABASE = MYSQL   # 或INFORMIX(兼容模式)MACHINE  = LINUXWORKLOAD = TPCH
# 修改config.h文件,在文件开头添加如下内容vi config.h
----支持64位#ifndef DSS_HUGE#define DSS_HUGE long long#endif
#ifndef HUGE_FORMAT#define HUGE_FORMAT "%lld"#endif
#define SUPPORT_64BIT 1
#ifndef RNG_A#define RNG_A 1103515245LL#endif
#ifndef RNG_C#define RNG_C 12345LL#endif
#ifndef SET_ROWCOUNT#define SET_ROWCOUNT "LIMIT %d" // MySQL用LIMIT限制行数#endif
----和mysql数据库相关#ifndef START_TRAN#define START_TRAN "START TRANSACTION"#endif
#ifndef END_TRAN#define END_TRAN "COMMIT"#endif
#ifndef SET_DBASE#define SET_DBASE "USE %s"#endif
#ifndef SET_OUTPUT#define SET_OUTPUT "SELECT INTO OUTFILE"#endif
#ifndef GEN_QUERY_PLAN#define GEN_QUERY_PLAN "EXPLAIN"#endif
-----行数#ifndef SET_ROWCOUNT#define SET_ROWCOUNT "LIMIT %d"#endif-----日期#ifndef HUGE_DATE_FORMAT#define HUGE_DATE_FORMAT "%02lld"#endif
# 编译make
复制代码



  • 将此工具安装在 MySQL 服务器 (192.168.18.182),通过其 MySQL 客户端,可以远程登录 TiDB 服务器,进行相关操作

  • 编译完成后,即可使用 dbgen 生成测试数据

6. 性能测试

6.1 OLTP 性能测试

6.1.1 MySQL 性能测试

(1)生成测试数据


# 创建test数据库mysql -u root -p create database test;# 生成测试数据sysbench oltp_read_write \  --mysql-host=127.0.0.1 \  --mysql-port=3306 \  --mysql-user=root \  --mysql-password=Root#1234 \  --mysql-db=test \  --tables=5 \  --table-size=25000000 \  --db-driver=mysql \  prepare  # --tables=5  #生成5张表# --table-size=25000000  #单表2500万行数据# 数据约52G,执行时间约40分钟
复制代码




(2)执行测试


sysbench oltp_read_write \  --mysql-host=127.0.0.1 \  --mysql-port=3306 \  --mysql-user=root \  --mysql-password=Root#1234 \  --mysql-db=test \  --tables=5 \  --table-size=25000000 \  --threads=128 \  --time=600 \  --report-interval=10 \  --db-driver=mysql \  run > mysql-result.log  #  --threads=128 \             # 根据需求调整线程数#  --time=600 \                # 测试时长(秒)#  --report-interval=10 \      # 每10秒报告一次
# mysql-result.log 生成执行结果的日志
复制代码


(3)查看测试结果


# 查看执行结果more mysql-result.log | grep "transactions:"more mysql-result.log | grep "avg:"more mysql-result.log | grep "95th percentile:"
# grep "transactions:" # TPS # grep "avg:" # 平均延迟 # grep "95th percentile:" # P95延迟
复制代码


6.1.2 TiDB 性能测试

(1)生成测试数据


# 创建远程登录账号create user 'tidb'@'%' IDENTIFIED WITH mysql_native_password BY 'Root#1234';grant all privileges on *.* to 'tidb'@'%';flush privileges;# 远程登录TiDB数据库mysql -h 192.168.18.181 -u tidb -P 4000 -p # 创建数据库create database titest;# 生成测试数据sysbench oltp_read_write \  --mysql-host=192.168.18.181 \  --mysql-port=4000 \  --mysql-user=tidb \  --mysql-password=Root#1234 \  --mysql-db=titest \  --tables=5 \  --table-size=25000000 \  --db-driver=mysql \  --mysql-ignore-errors=all \  --create_secondary=off \  --auto-inc=on \  prepare
复制代码



(2)执行测试


sysbench oltp_read_write \  --mysql-host=192.168.18.181 \  --mysql-port=4000 \  --mysql-user=tidb \  --mysql-password=Root#1234 \  --mysql-db=titest \  --tables=5 \  --table-size=25000000 \  --threads=128 \  --time=600 \  --report-interval=10 \  --db-driver=mysql \  run > tidb-result.log
复制代码


(3)查看测试结果


# 查看执行结果more tidb-result.log | grep "transactions:"more tidb-result.log | grep "avg:"more tidb-result.log | grep "95th percentile:"
复制代码


6.2 OLAP 性能测试

6.2.1 MySQL 性能测试

(1)生成测试数据


# 通过TPC-H生成测试数据./dbgen -s 10 -f
# 会自动生成8个.tbl文件(lineitem, orders, part等)# -s 10 表示生成约10GB原始文本数据
# 检查生成的tbl文件ls -lh *.tbl
复制代码



(2)将 tbl 数据导入数据库


1)在 MySQL 中创建数据库和表


# 创建数据库mysql -u root -pcreate database tpch;
# 修改TPC工具中的dss.ddl文件vi /root/tpc-h/dbgen/dss.ddl# 在文件开头,加入如下语句drop database tpch;create database tpch;use tpch;
# 在mysql中建表mysql -u root -p# 在mysql命令行,执行如下命令,即可创建8张表\. /root/tpc-h/dbgen/dss.ddl
复制代码



2)创建数据导入文件 load.ddl


# 在tpc-h工具的安装目录vi load.ddluse tpchload data local INFILE '/data/tbl/customer.tbl' INTO TABLE CUSTOMER FIELDS TERMINATED BY '|';load data local INFILE '/data/tbl/region.tbl' INTO TABLE REGION FIELDS TERMINATED BY '|';load data local INFILE '/data/tbl/nation.tbl' INTO TABLE NATION FIELDS TERMINATED BY '|';load data local INFILE '/data/tbl/supplier.tbl' INTO TABLE SUPPLIER FIELDS TERMINATED BY '|';load data local INFILE '/data/tbl/part.tbl' INTO TABLE PART FIELDS TERMINATED BY '|';load data local INFILE '/data/tbl/partsupp.tbl' INTO TABLE PARTSUPP FIELDS TERMINATED BY '|';load data local INFILE '/data/tbl/orders.tbl' INTO TABLE ORDERS FIELDS TERMINATED BY '|';load data local INFILE '/data/tbl/lineitem.tbl' INTO TABLE LINEITEM FIELDS TERMINATED BY '|';
复制代码


3)导入数据


# 导入数据mysql -u root -p\. /root/tpc-h/dbgen/load.ddl
# 也可以执行下面的语句source /root/tpc-h/dbgen/load.ddl
复制代码



4)创建索引


# 修改dss.ri文件-- Sccsid:     @(#)dss.ri  2.1.8.1-- tpch Benchmark Version 8.0
-- CONNECT TO tpch;
use tpch;
-- ALTER TABLE tpch.REGION DROP PRIMARY KEY;-- ALTER TABLE tpch.NATION DROP PRIMARY KEY;-- ALTER TABLE tpch.PART DROP PRIMARY KEY;-- ALTER TABLE tpch.SUPPLIER DROP PRIMARY KEY;-- ALTER TABLE tpch.PARTSUPP DROP PRIMARY KEY;-- ALTER TABLE tpch.ORDERS DROP PRIMARY KEY;-- ALTER TABLE tpch.LINEITEM DROP PRIMARY KEY;-- ALTER TABLE tpch.CUSTOMER DROP PRIMARY KEY;

-- For table REGIONALTER TABLE tpch.REGIONADD PRIMARY KEY (R_REGIONKEY);
-- For table NATIONALTER TABLE tpch.NATIONADD PRIMARY KEY (N_NATIONKEY);
ALTER TABLE tpch.NATION-- ADD FOREIGN KEY NATION_FK1 (N_REGIONKEY) references tpch.REGION;ADD FOREIGN KEY NATION_FK1 (N_REGIONKEY) references tpch.REGION(R_REGIONKEY);

COMMIT WORK;
-- For table PARTALTER TABLE tpch.PARTADD PRIMARY KEY (P_PARTKEY);
COMMIT WORK;
-- For table SUPPLIERALTER TABLE tpch.SUPPLIERADD PRIMARY KEY (S_SUPPKEY);
ALTER TABLE tpch.SUPPLIERADD FOREIGN KEY SUPPLIER_FK1 (S_NATIONKEY) references tpch.NATION(N_NATIONKEY);
COMMIT WORK;
-- For table PARTSUPPALTER TABLE tpch.PARTSUPPADD PRIMARY KEY (PS_PARTKEY,PS_SUPPKEY);
COMMIT WORK;
-- For table CUSTOMERALTER TABLE tpch.CUSTOMERADD PRIMARY KEY (C_CUSTKEY);
ALTER TABLE tpch.CUSTOMERADD FOREIGN KEY CUSTOMER_FK1 (C_NATIONKEY) references tpch.NATION(N_NATIONKEY);
COMMIT WORK;
-- For table LINEITEMALTER TABLE tpch.LINEITEMADD PRIMARY KEY (L_ORDERKEY,L_LINENUMBER);
COMMIT WORK;
-- For table ORDERSALTER TABLE tpch.ORDERSADD PRIMARY KEY (O_ORDERKEY);
COMMIT WORK;
-- For table PARTSUPPALTER TABLE tpch.PARTSUPPADD FOREIGN KEY PARTSUPP_FK1 (PS_SUPPKEY) references tpch.SUPPLIER(S_SUPPKEY);
COMMIT WORK;
ALTER TABLE tpch.PARTSUPPADD FOREIGN KEY PARTSUPP_FK2 (PS_PARTKEY) references tpch.PART(P_PARTKEY);
COMMIT WORK;
-- For table ORDERSALTER TABLE tpch.ORDERSADD FOREIGN KEY ORDERS_FK1 (O_CUSTKEY) references tpch.CUSTOMER(C_CUSTKEY);
COMMIT WORK;
-- For table LINEITEMALTER TABLE tpch.LINEITEMADD FOREIGN KEY LINEITEM_FK1 (L_ORDERKEY) references tpch.ORDERS(O_ORDERKEY);
COMMIT WORK;
ALTER TABLE tpch.LINEITEMADD FOREIGN KEY LINEITEM_FK2 (L_PARTKEY,L_SUPPKEY) references tpch.PARTSUPP(PS_PARTKEY,PS_SUPPKEY);
alter table CUSTOMER rename to customer ;alter table LINEITEM rename to lineitem ;alter table NATION rename to nation ;alter table ORDERS rename to orders ;alter table PART rename to part ;alter table PARTSUPP rename to partsupp ;alter table REGION rename to region ;alter table SUPPLIER rename to supplier ;
COMMIT WORK;
# 创建索引\. /root/tpc-h/dbgen/dss.ri
复制代码



5)查看生成的索引


# 查看当前数据库所有表的索引SELECT     table_name AS 表名,    index_name AS 索引名,    column_name AS 索引列,    non_unique AS 是否非唯一,    index_type AS 索引类型FROM     information_schema.statisticsWHERE     table_schema = DATABASE()  -- 当前数据库ORDER BY     table_name, index_name, seq_in_index;
复制代码



6)生成查询语句


# 将/tpc-h/dbgen/queries目录中的查询模板文件拷贝至dbgen目录下cp -r ./queries/* ./
# 使用qgen生成22条SQL查询语句cd /root/tpc-h/dbgen# 在dbgen目录下新建query.sh文件vi query.shfor i in {1..22}; do /root/tpc-h/dbgen/qgen $i > /root/tpc-h/dbgen/query$i.sql; donechmod +x query.sh./query.shls -al *.sql
复制代码



7)修改查询语句


# 修改SQL查询语句# TPC-H查询模板包含limit -1,在MySQL中会报错,需要批量移除
# 将所有 limit -1 替换为 limit 1sed -i '$s/limit -1/limit 1/' query*.sql
# 去掉脚本中的 date 函数sed -i 's/ date / /g' query*.sql
# 在个 SQL 文件的第一行 添加 use tpch; 语句sed -i '1a use tpch; \n' *.sql
# 修改query1.sql文件# 需要 将 where 条件的内容修改 # where # l_shipdate <= date '1998-12-01' - interval '90' day (3)
# 修改为 如下 where l_shipdate <= '1998-12-01' - interval '90' day
复制代码


8)执行查询测试


# 默认表名为大写,在SQL查询语句中为小写,修改表名ALTER TABLE `CUSTOMER` RENAME TO `customer`;ALTER TABLE `REGION` RENAME TO `region`;ALTER TABLE `NATION` RENAME TO `nation`;ALTER TABLE `SUPPLIER` RENAME TO `supplier`;ALTER TABLE `PART` RENAME TO `part`;ALTER TABLE `PARTSUPP` RENAME TO `partsupp`;ALTER TABLE `ORDERS` RENAME TO `orders`;ALTER TABLE `LINEITEM` RENAME TO `lineitem`;
# 执行查询语句,并记录执行时间source /root/tpc-h/dbgen/query8.sqlsource /root/tpc-h/dbgen/query10.sqlsource /root/tpc-h/dbgen/query13.sql
复制代码



9)统计执行时间


6.2.2 TiDB 性能测试

1)创建数据库和表


# 创建数据库mysql -u tidb -p -P 4000 -h 192.168.18.181create database tpch;use tpch;# 创建表source /root/tpc-h/dbgen/dss.ddl
复制代码


2)导入数据


  • 导入数据量比较小的 4 张表

  • 通过 tiup-lightning 导入数据量的表



3)执行查询测试


使用 MySQL 测试时,生成的 query1-22.sql 查询语句测试即可。


# 在测试tidb时,没有生成索引# 表名大小写也没有修改source /root/tpc-h/dbgen/query8.sqlsource /root/tpc-h/dbgen/query10.sqlsource /root/tpc-h/dbgen/query13.sql
复制代码


4)统计执行结果


7. 性能对比

7.1 OLTP 性能对比


在测试环境中,TiDB、TIKV 等组件均部署在同一节点,数量均为 1 个,但 TiDB 表现仍然十分优异。


(1)TPS (每秒事务处理量) 分析


  • TiDB 性能领先 27.6 倍


  • TiDB 的分布式架构允许水平扩展,多个节点可以并行处理事务

  • MySQL 的单机架构受限于单节点处理能力,存在明显瓶颈


  • TiDB 采用多副本和 Region 分片机制,能够高效处理高并发请求

  • MySQL 在高并发下容易出现锁竞争和资源争用


  • TiDB 可以更好地利用多核 CPU 和分布式存储资源

  • MySQL 在极端负载下可能出现资源利用不均衡


(2)平均延迟分析


  • TiDB 延迟低 28 倍


  • TiDB 的分布式查询优化器能够并行处理查询请求

  • MySQL 的串行处理模式在高负载下导致响应时间急剧增加


  • TiDB 采用分布式内存池管理,减少磁盘 I/O 等待

  • MySQL 的缓冲池在高压力下可能频繁刷新,增加磁盘 I/O


(3)P95 延迟分析


  • TiDB 延迟低 74 倍


  • TiDB 表现出极佳的性能一致性,P95 延迟仅比平均延迟高约 70%

  • MySQL 的性能波动极大,P95 延迟是平均延迟的 4.5 倍


  • TiDB 的分布式调度避免了资源竞争导致的性能波动

  • MySQL 在高并发下容易出现资源竞争,导致某些请求被 ” 饿死 ”

7.2 OLAP 性能对比


(1)TiDB 在复杂分析查询中优势明显


  • 尤其在 Query6 和 Query16 上提升超过 3000% 和 5000%。

  • 说明其分布式架构对大数据聚合、多表连接等操作优化显著。


(2)所有查询 TiDB 均优于 MySQL


  • 几何平均性能提升达 12 倍(+1202%),体现其整体在 OLAP 场景下的高性能。


(3)TiDB 更适合数据密集型分析


  • 尤其是在 TPC-H 这类强调复杂查询、大数据扫描和聚合的场景中,其并行计算与分布式执行能力发挥出色。

  • 而 MySQL 在单机复杂查询上存在瓶颈,尤其是涉及大量数据扫描和聚合时,其执行时间显著高于 TiDB。

8. 数据压缩对比

以 Sysbench 生成的测试数据,在 MySQL 和 TiDB 中的存储状况进行对比。

8.1 MySQL 数据存储状况

(1)表逻辑大小


# 在 MySQL 中查询表的逻辑大小SELECT     table_name AS '表名',    round(((data_length + index_length) / 1024 / 1024), 2) AS '大小(MB)',    round((data_length / 1024 / 1024), 2) AS '数据大小(MB)',    round((index_length / 1024 / 1024), 2) AS '索引大小(MB)',    table_rows AS '行数'FROM information_schema.TABLES WHERE table_schema = 'test' AND table_name LIKE 'sbtest%'ORDER BY table_name;
复制代码



  • 逻辑大小:25221MB ÷ 1024 ≈ 24.63GB


(2)表占用物理磁盘大小


# 在 MySQL 中执行以下命令查找数据目录SHOW VARIABLES LIKE 'datadir';
# 进入 MySQL 数据目录cd /var/lib/mysql
# 查看测试数据库目录大小du -sh test/
# 查看单个表文件大小ls -lh test/sbtest*.ibd
# 计算所有测试表的总大小du -ch test/sbtest*.ibd | grep total
复制代码



  • 表占用物理磁盘大小:29G

8.2 TiDB 数据存储状况

(1)表逻辑大小


# 方法1:查看 TiKV 中测试表的逻辑大小SELECT SUM(data_length + index_length) AS total_logical_sizeFROM information_schema.TABLESWHERE table_schema = 'titest' AND table_name IN ('sbtest1', 'sbtest2', 'sbtest3', 'sbtest4', 'sbtest5')
# 方法2:SELECT table_name, DATA_LENGTH, INDEX_LENGTH, (DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024 AS total_size_GB FROM information_schema.TABLES WHERE table_schema = 'titest';
复制代码



  • 逻辑大小:2225334904 ÷ 1073741824 ≈ 2.07G


(2)表占用物理磁盘大小


  • 通过 TEM- 参数查询,组件选择 TiKV,字段 data-dir查询 TiKV 具体的存储路径



  • 登录 tikv 主机,查看目录大小



  • 物理磁盘占用大小:13 GB

8.3 数据存储状况对比


(1)极高的逻辑数据压缩率


  • TiDB 的逻辑数据大小仅为 MySQL 的 110.9

  • 说明其存储引擎(TiKV)采用了更高效的数据编码和压缩算法(如列式存储格式、字典编码、前缀压缩等),极大减少了冗余数据存储。


(2)物理磁盘占用也更优


  • 尽管物理磁盘大小差距不如逻辑大小显著,但 TiDB 仍比 MySQL 节省 ~55% 的磁盘空间(13GB vs 29GB)。


  • 智能压缩机制:TiKV 默认使用 Snappy 或 ZSTD 压缩数据块。

  • 数据分层存储:支持冷热数据分离,进一步优化存储成本。


(3)架构存储优势


  • 分布式存储引擎(TiKV):以 Region 为单位管理数据,支持自动压缩和垃圾回收(GC),减少碎片。

9. TEM 易用性

TEM(TiDB Enterprise Manager)是平凯星辰推出的企业级一站式数据库管理平台,专为简化 TiDB 的运维管理、提升开发效率而设计。

9.1 核心功能

(1)集中化监控与告警


  • 集群状态监控:提供全景式仪表盘,实时可视化展示集群健康状况、性能指标(如 QPS、延迟、吞吐量)、资源使用率(CPU、内存、磁盘、IO)。


  • 拓扑可视化:直观展示集群内所有组件(TiDB、TiKV、PD、TiFlash)的物理部署和状态,快速定位故障节点。



(2)智能运维与管理


  • 集群扩缩容:提供图形化一键扩缩容功能,可轻松增加或减少计算(TiDB)或存储(TiKV、TiFlash)节点,极大简化了分布式集群的容量调整操作。



  • SQL 语句诊断:集成 SQL 诊断功能,可快速分析慢查询、定位性能瓶颈、提供优化建议,甚至支持一键抓取并可视化执行计划。



  • 数据闪回:基于 TiDB 的垃圾回收(GC)机制,提供数据闪回(Flashback) 功能,可快速恢复因误操作(如 DROP TABLE, DELETE)而丢失的数据,极大降低数据恢复的复杂度和风险。



  • 数据备份与恢复:支持全量备份、增量备份,提供图形化界面配置备份策略和点时间点恢复(PITR),保障数据安全性和业务连续性。



  • 集群巡检:可定期或手动对集群进行健康巡检,自动检查配置合规性、版本兼容性、性能风险等,并生成巡检报告,帮助预防潜在问题。


9.2 易用性总结

(1)开箱即用


  • 部署简单,与 TiDB 集群无缝集成,无需复杂配置


(2)图形化操作


  • 将复杂的命令行操作转化为直观的图形界面点击操作(如扩缩容、备份设置等)

  • 大幅降低运维门槛,使 DBA 和开发者都能高效管理数据库


(3)统一管理入口


  • 提供了集监控、告警、运维、诊断、安全于一体的中心化管理平台

  • 避免了在不同工具间切换的麻烦,提升了运维效率


(4)自动化与智能化


  • 通过智能诊断(如 SQL 分析、巡检),减少重复性手工劳动,使运维工作更高效、更可靠


平凯星辰 TEM 的核心价值在于 “化繁为简” 。通过统一的图形化平台,将 TiDB 分布式数据库复杂的运维管理工作变得可视化、自动化、智能化,显著降低了企业用户的运维成本和技术门槛,同时通过数据闪回、备份恢复等重要功能增强了数据安全性和业务稳定性,是构建和运营 TiDB 企业级应用不可或缺的运维利器。

10. 总结

(1)极高的吞吐能力(TPS)


  • TiDB 的 TPS 达到 9.6 万 / 秒,远超 MySQL 的 3481/ 秒

  • 说明其在高并发事务处理中能有效利用分布式资源,线性扩展能力强


(2)极低的延迟表现


  • 无论是平均延迟还是 P95 延迟,TiDB 都远低于 MySQL

  • 尤其是在高百分位延迟(P95)上优势更为明显(74 倍

  • 说明系统响应更稳定,适合对延迟敏感的业务


(3)适用于高并发 OLTP 场景


  • TiDB 不仅擅长 OLAP(如 TPC-H),在 OLTP 场景下也表现优异

  • 真正实现了 HTAP(混合事务 / 分析处理) 能力


(4)架构优势体现


  • 分布式架构:TiDB 通过分片(Region)和多副本机制,轻松水平扩展,避免了 MySQL 单机瓶颈。

  • 自动负载均衡:PD(Placement Driver)组件智能调度数据分布和访问路由。

  • 强一致性事务:基于 Google Spanner 设计的 MVCC + Percolator 事务模型,保证分布式事务的 ACID。

  • 计算存储分离:TiDB(计算层)与 TiKV(存储层)分离,可独立扩展,进一步提升并发处理能力。

  • TiDB 在保持 MySQL 协议兼容的同时,提供了更好的扩展性和稳定性。


TiDB 不仅在分析型查询(OLAP)中表现卓越,在事务处理(OLTP)方面也具备极强的并发处理能力和低延迟特性,是一款真正的 HTAP 数据库。其分布式架构、线性扩展能力和稳定性使其更适合高并发、大数据量的企业级应用场景。


-————————————————————————————————————————–


  • 因技术水平、认知能力有限,以上测试方法、数据、评论如有不当之处,请大家批评、指正!谢谢!


  • 也欢迎大家私信、留言互动与交流!


发布于: 1 小时前阅读数: 4
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
别再猜了!用数据揭穿平凯数据库(TiDB 企业版)敏捷模式和MySQL的性能对比真相!_版本测评_TiDB 社区干货传送门_InfoQ写作社区