本篇围绕MySQL数据库的底层存储模型、列类型来聊聊数据库表设计及建模中要注意的事项,剖析最根源的底层物理存储文件,用最真实的数据剖析来证明和解答开发过程中的疑惑。

  在一些技术谈资、面试沟通过程中,MySQL特别是我们常用的Innodb存储引擎,是非常高频的话题点,而现实中不难发现,很多朋友都浅尝辄止,只能“照本宣科”被动背诵一些概念,遗憾的是这并不足以让我们“精通”。究其主要原因还是因为物理存储文件的结构过于复杂,它的“可观测性”并不友好,并且,对于一般的软件开发者而言,与数据库的交互窗口更多聚焦在数据库工具界面,鲜有机会接触到物理存储内部,浮于概念化。

  本篇的目的就是解开MySQLInnodb的神秘面纱直击第一现场来感受真实的数据存储,分析建模设计过程中列类型的影响,帮助更好地做好“精挑细选”。

探查真实的物理存储

关于Innodb部分的学习推荐如下资料入手和探究:

MySQL官方文档

MySQL技术内幕-Innodb存储引擎

Innodb Ruby(Innodb存储文件解析工具)

innodb文件分析工具innodb_ruby使用操作

Innodb物理存储层层剥开

数据库文件存储位置

  MySQL把我们的数据存储在哪里了?可以在命令行或数据库交互界面输入show variables like 'datadir'得到答案,即数据库文件存储位置。

-- 如:
show variables like 'datadir'
variable_name value
datadir /usr/local/mysql/data/

  我们再来创建一个数据库,取名为test,如下:

create database test;

  创建库后,我们在/usr/local/mysql/data/路径下得到一个名为test的文件夹,即新数据库空间存储路径,会用来存储该数据库的所有信息。

  我们再来创建一张测试表,也取名为test,如下:

CREATE TABLE `test` (`col_1` bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`col_1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

  创建表后,我们在/usr/local/mysql/data/test路径下得到
test.frmtest.ibd两个文件,frm格式文件是MySQL架构层对于表结构定义的文件,与具体的存储引擎无关,而ibd文件则是Innodb存储引擎独有的,表结构选择该引擎后会以该格式文件进行物理存储,下面我们针对ibd文件进行深入分析。

ibd文件层层分解

  对于一个ibd文件而言,也是有层次、有组织结构的。整体上它是一个独立的表空间,只为一张表而服务(一般会这样配置)。

  从整体到具体、从大到小层层分解的话,可以描述为表空间(tablespace)段(segment)区(extent)页(page),会从抽象到具体,从逻辑到现实,接近我们事实数据的部分。

「数据密集型系统搭建」原理篇|数据类型不怕精挑细选相关推荐

  1. 「数据密集型系统搭建」开卷篇|什么是数据密集型系统

      在我们开发的诸多系统,基本都可以视为"数据密集型系统",数据是一切物质的载体,我们依靠数据做存储记录,通过数据进行信息传递交换,最终还要数据来呈现和展示等,从一定视角而言,系统 ...

  2. 谁说自学Python不行!精挑细选自写的100篇文章,让你自学路上不再迷茫!!

    前言  自学Python有一段时间了,一直在CSDN坚持写学习笔记.每天学一点,每天进一步.希望自己的未来会变的优秀,至少自己在努力,用心在努力.机会是留给有准备的人.奥利给!  整理了我最近学习的全 ...

  3. 当我们在聊「开源大数据调度系统Taier」的数据开发功能时,到底在讨论什么?

    原文链接:当我们在聊「开源大数据调度系统Taier」的数据开发功能时,到底在讨论什么? 课件获取:关注公众号__ "数栈研习社",后台私信 "Taier"__ ...

  4. 地区的json数据_数据密集型系统基础:数据模型与查询语言

    (点击上方公众号,可快速关注) 转自:知了小巷-知了笔记 [导读]:大多数应用程序是通过一层一层叠加数据模型来构建的.每一层都面临的关键问题是:「如何将其用下一层来表示?」复杂的应用程序可能会有更多的 ...

  5. 专访京东副总裁翁志:全方位解读 CNCC 2018「数据开创商业新生态」技术论坛 | CNCC 2018...

    雷锋网 AI 科技评论按:电子商务在中国高速发展的十余年中,为零售行业在成本.效率和体验上带来了颠覆式的发展.而近年来人工智能技术的发展,又带来了零售业态的新升级,即线上与线下零售逐渐走向融合,零售终 ...

  6. Gartner预测2019年十大「数据和分析技术」趋势:增强型分析成为重要卖点

    来源:机器之能 摘要:处于数据和分析位置的领导人必须审视这些趋势对业务带来的潜在影响,并相应调整业务模式和运营,否则就有可能失去竞争优势.增强型数据分析,增强型数据管理,持续型智能,可解释的 AI,数 ...

  7. 中电金信「财务公司核心系统白皮书」正式发布!

    随着数字技术的深度应用,数字化转型正迎来新一轮变革.如何促进企业战略转型,助力企业发展提质增效,以标准化.数字化.精细化支撑企业实现高质量发展,已成为财务公司数字化转型的重要课题. 为推进财务公司数字 ...

  8. 【Apache Kylin 】 大数据下的OLAP解决方案(原理篇)

    前言 在现在的大数据时代,Hadoop已经成为大数据事实上的标准规范,一大批工具陆陆续续围绕Hadoop平台来构建,用来解决不同场景下的需求. 让我们来想想有哪些业务需求呢? 比如Hive是基于Had ...

  9. Tongsuo/铜锁|「开放原子开源基金会」拜访篇

    文|杨洋(花名:凯申 ) 铜锁开源密码库创始人 蚂蚁集团高级技术专家 本文 500 字 预计阅读时间 3 分钟 2023 年 3 月,铜锁密码学开源项目的研发和运营团队拜访了位于北京的开放原子开源基金 ...

最新文章

  1. 程序员们,不妨高调一点儿!2021,一起冲!
  2. 万物互联时代的边缘计算
  3. matlab gui设计实例_S-Funciton应用实例
  4. 重启IIS和SqlServer的命令行
  5. 51单片机 驱动步进电机 C语言 lcd,51单片机红外遥控控制步进电机的LCD显示源程序...
  6. C++导入导出动态库
  7. 高通CEO谈中国5G:原以为会晚个5-10年,结果第一年就推出了
  8. java B2B2C Springboot多租户电子商城系统-Spring Cloud Stream(消息驱动)
  9. 学科竞赛作品 智能家居受控端
  10. SylixOS 内存管理源代码分析--pageTable.c
  11. 智慧农业技术解决方案
  12. html显示链接音乐,歌曲链接怎么填_HTML中如何链接本地音乐
  13. unity blend混合
  14. 网站SEO优化高质量内容怎么写
  15. HGDB pg_stat_statements 用法
  16. 达梦数据库分区表介绍
  17. 自动驾驶之-MATLAB环境下利用单目摄像头和语义分割创建占位栅格(occupancy grid)
  18. 1个月写900多条用例,2线城市年薪33W+的测试经理能有多卷?
  19. 2k2实用球员_nba2kol2操作技巧大全,nba2kol2平民球星阵容搭配。
  20. ASP读取淘宝CVS数据包。

热门文章

  1. 用Deformable Part Model(DPM)voc-release3.1训练自己的模型
  2. 力扣【23】合并K个排序链表
  3. 图中奇点数量不可能有奇数个的证明
  4. 直播实录|百度大脑EasyDL邀一线专家分享肿瘤识别
  5. Python定时抢购天猫商品(一)
  6. excel表格打印每页都有表头_Excel打印时每页都有表头标题是怎样设置的?
  7. Unity中使用TexturePacker优化图集
  8. vue路由当中的导航钩子中关于next这个方法的描述应该如何理解?
  9. 基于 RFID 与 ZigBee 智能汽车装配生产线车模追溯系统
  10. lcd显示外部flash内的图片