数据库
由一行行记录组成,每行记录存放到页中,一个页的默认大小为16k,一个个页组成了每张表的表空间
如果一个页中存放记录越多,那么性能也越高
这是因为,
数据库
表空间中的页存放在磁盘上,
MySQL
数据库
先从磁盘中的页读取到内存缓冲池中,以页为单位进行读取和管理记录
如果想页中的记录变多,可以启用
压缩
(记录、页、表
压缩
)
普遍使用页
压缩
压缩
每条记录: 因为每次读写都要
压缩
和解压,过于依赖 CPU 的计算能力,性能会明显下降;另外,因为单条记录大小不会特别大,一般小于 1K,
压缩
效率也并不会特别好。
第一种:传统
压缩
传统的表
压缩
方式是在
MySQL
5.0.7之前使用的,现在已经废弃了,因为这种方式不但没有提升
数据库
的效率,反而降低了效率,导致buffer pool的使用率降低了。
create table时指定
压缩
后表的大小,即 KEY_BLOCK_SIZE 的大小,page默认大小为16KB。
压缩
是按page为单位进行
压缩
的。
TDSQL
MySQL
版(TDSQL for
MySQL
)是部署在腾讯云上的一种支持自动水平拆分、Shared Nothing 架构的分布式
数据库
。TDSQL
MySQL
版 即业务获取的是完整的逻辑库表,而后端会将库表均匀的拆分到多个物理分片节点。
水平拆分方案是 TDSQL
MySQL
版 的基础原理,它的每个节点都参与计算和数据存储,且每个节点都仅计算和存储一部分数据。因此,无论业务的规模如何增长,我们仅需要在分布式集群中不断的添加设备,用新设备去应对增长的计算和存储需要即可。
通过如下视
MySQL
InnoDB表支持行格式
压缩
,
压缩
后的表能够显著减少磁盘空间占用,但是
压缩
功能也会造成一定的性能损耗,比如加重CPU的负载,降低
数据库
吞吐量。本文通过测试案例,来具体了解
MySQL
InnoDB行格式
压缩
的效果以及对性能的影响。
MySQL
版本:5.7.19
测试工具:sysbench,10张表,单张表1000w数据,32线程并发
测试场景:read_only,write_only,read_write
行格式
压缩
语法:
ALTER TABLE sbtest1 ROW_FORMAT=COM
官网地址:https://github.com/Percona-Lab/t
pc
c-
mysql
[root@test3 src]# unzip t
pc
c-
mysql
-master.zip
[root@test3 src]# mv t
pc
c-
mysql
-master /usr/local/src/
[root@test3 l...