从一条数据说起——InnoDB存储数据结构

先给大家讲一个故事,我刚参加工作,在一个小作坊里面当【码畜】(尽管现在也是),有一天老板从我背后走过,说了一句举世震惊的话:我看你们的数据库和excel一样,不就是一行行数据,人家excel还可以对单元格进行美化,还有各种函数,生成各种报表,你们的数据库有什么复杂的?我竟无力反驳。为什么要说这个故事呢,当然是为了引出今天的话题——InnoDB的数据结构。虽然做开发的各位,或多或少都接触过数据库...
摘要由CSDN通过智能技术生成

先给大家讲一个故事,我刚参加工作,在一个小作坊里面当【码畜】(尽管现在也是),有一天老板从我背后走过,说了一句举世震惊的话:我看你们的数据库和excel一样,不就是一行行数据,人家excel还可以对单元格进行美化,还有各种函数,生成各种报表,你们的数据库有什么复杂的?我竟无力反驳。
为什么要说这个故事呢,当然是为了引出今天的话题——InnoDB的数据结构。
虽然做开发的各位,或多或少都接触过数据库,但是数据库中的一行行数据到底是怎么存储的,存储的格式又是什么,就不是每个开发都知道的了,数据库对我们而言就是一个黑盒子,你想打开这个黑盒子一探究竟吗?【不,我不想,我只想CURD】【不,这不是你的真实想法】。当我们收了快递,尽管我们已经知道是什么快递了,但是我们还是会迫不及待的拆开快递,更何况,我们面对的是未知的事物,作为人的天性,一定是非常希望可以打开这个黑盒子,更别提充满好奇心的程序猿了,今天我就带着打开这神秘的黑盒子。
这次我们打开的黑盒子便是InnoDB存储数据结构,换而言之,MySql其他的存储引擎,如Memory,MyISAM不在本次的讨论范围。
InnoDB页简介
InnoDB是一个把数据存储在硬盘的存储引擎,即使服务器重启,数据依然不会丢失,而真正的数据处理是发生在内存中的,所以nnoDB需要把硬盘上数据加载到内存中,然后在内存中进行各种数据处理,最终在某个时机把内存中的数据刷新到硬盘。而硬盘的处理速度是很慢很慢的,和内存差的太远了,如果InnoDB每次只从硬盘中读取一条数据,显然是不行的,速度会慢死,所以InnoDB会把数据分成若干页,以页作为内存和硬盘之间交互的基本单位,说的再直白点:InnoDB读取数据不是一行一行读,而是以页为最小单位读取数据。默认情况下,一页是16K,也就是InnoDB读取数据的数据大小至少是16K。当然这个值是可以被修改的,因为一般情况下,也没人会修改这个值,所以这里我就不说明应该怎么改了。
InnoDB行格式
之所以,文章开头的老板会认为数据库和excel是一样的,就是因为我们平时基本都是用可视化工具去管理表,去查数据,一个不懂的人乍一看,确实和excel有点像,就是一行一行数据,这些数据在硬盘上存储格式是需要我们去探究的。
InnoDB 提供了好4种行格式供我们选择,分别是Compact、Redundant、Dynamic和Compressed行格式,以后可能会有新的行格式出现,但是区别并不是很大。
我们建表的时候,可以指定某种行格式:
CREATE TABLE table_name (列信息) ROW_FORMAT=行格式名称
复制代码也可以修改已经存在的表的行格式:
ALTER TABLE table_name ROW_FORM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值