[MySQL] InnoDB行格式剖析

InnoDB和大多数行式数据库一样,记录以行的格式存储,它提供了两种格式:Compact和Redundant


Compact

Compact格式是在MySQL5.0时才被引入,它是新的行格式,其设计目标是高效存放数据,示意图如下:



1)变长字段长度列表。按列的逆序放置,当列长度小于255字节,用1字节表示,若大于255字节,用2个字节表示,至多为2字节(这也很好解释了InnoDB中varchar的最大长度为什么是65535,因为2个字节为16位,2的16次方-1)。注意,对于固定长度字段(如char),是不需要记录其长度的。
2)NULL标志位。指示该行中的列是否为NULL,1表示NULL。
3)记录头信息。固定占用5个字节(40位),每位代表的含义如下表所示:



4)最后就是实际存储的该行每列的数据了,注意:NULL不在该部分中占用存储。
5&#
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL InnoDB是一种非常流的关系型数据库存储引擎,但是在高并发、大数据量的情况下,需要对InnoDB适当的调优才能发挥出其最大的性能。 以下是一些常见的InnoDB调优方法: 1. 调整缓冲池大小:InnoDB的缓冲池是用来存储数据和索引的,缓冲池越大,可以存储的数据和索引也就越多。可以通过设置innodb_buffer_pool_size参数来调整缓冲池的大小。 2. 开启慢查询日志:慢查询日志可以记录执时间超过指定阈值的SQL语句,以便进分析和优化。可以通过设置slow_query_log和long_query_time参数来开启慢查询日志。 3. 调整线程数:InnoDB使用多个线程来处理不同的任务,如读取数据、写入数据、刷新缓存等。可以通过设置innodb_thread_concurrency参数来调整InnoDB使用的线程数。 4. 分区表:如果表中的数据量很大,可以考虑将表进分区,这样可以提高查询速度并减少锁的竞争。 5. 调整日志文件大小:InnoDB使用redo日志和undo日志来保证数据的一致性和可恢复性。可以通过设置innodb_log_file_size参数来调整日志文件的大小,以提高崩溃恢复速度。 6. 调整缓存大小:InnoDB使用缓存来存储数据和索引,缓存大小可以通过设置innodb_buffer_pool_size参数来调整。 7. 使用SSD硬盘:SSD硬盘相比传统机械硬盘有更高的读写速度和更低的访问延迟,可以显著提高InnoDB的性能。 8. 使用索引:在查询数据时,使用索引可以大大提高查询速度。可以通过使用explain命令来分析查询语句是否使用了索引。 以上是一些常见的InnoDB调优方法,需要根据具体情况进选择和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值