天道酬勤,学无止境

【MySQL】lnnoDB存储引擎你是怎么理解的?

InnoDB逻辑存储单元主要分为表空间,段,区和页

1. 表空间

InnoDB所有的数据都是存放在表空间的,表空间又分为系统表空间和独立表空间

MySQL5.7之后又多了临时表空间和通用表空间

1) 系统表空间

其中系统表空间,主要是以ibdata1来命名。
在安装数据库初始化数据库时就是系统在创建一个ibddata1的表空间文件,它会存储所有数据的信息以及回滚段(undo)的信息。

innodb_data_file_path 负责定义系统表空间的路径,初始化大小,自动扩展策略,如下:
数据库MySQL8中,ibdata1默认大小是12M

mysql> show variables like '%data_file%';
+----------------------------+------------------------+
| Variable_name              | Value                  |
+----------------------------+------------------------+
| innodb_data_file_path      | ibdata1:12M:autoextend |
| innodb_temp_data_file_path | ibtmp1:12M:autoextend  |
+----------------------------+------------------------+
2 rows in set

mysql> 

数据库默认的自动扩展大小是64M,如下:

innodb_autoextend_increment 默认是64M

mysql> show variables like '%auto
%';
+----------------------------------------------+-------+
| Variable_name                                | Value |
+----------------------------------------------+-------+
| auto_generate_certs                          | ON    |
| auto_increment_increment                     | 1     |
| auto_increment_offset                        | 1     |
| autocommit                                   | ON    |
| automatic_sp_privileges                      | ON    |
| caching_sha2_password_auto_generate_rsa_keys | ON    |
| innodb_autoextend_increment                  | 64   |
| innodb_autoinc_lock_mode                     | 2     |
| innodb_stats_auto_recalc                     | ON    |
| sha256_password_auto_generate_rsa_keys       | ON    |
| sql_auto_is_null                             | OFF   |
+----------------------------------------------+-------+
11 rows in set
2) 独立表空间
mysql> show variables like '%innodb_file_per_table%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set

默认是开启的,如果没有开启设置 innodb_file_per_table=1即可。

每个表都有自己的独立表空间,可以实现表空间的转移,回收表空间也特别的方便,不需要存储在idbdata1中,独立表空间文件存储对应表的B+树结构,索引以及插入缓冲等信息。 其余的信息还是存放在默认表空间里。

缺点在于每个表都有.frm 和.ibd 两个文件描述符,如果单标增长过快,就容易出现性能问题。

共享表空间的数据和文件放在一起便于管理,但无法回收, 统计分析及日志类系统不太适合用共享表空间。

2. 段

表空间是由段组成的,也可以把一个表理解为一个段。通常有数据段,回滚段,索引段等。
每个段由N个区和32个零散的页组成,段空间扩展是以区为单位进行扩展。

一般情况下,创建一个索引的同时会创建两个段,分别为非子叶节点段和子叶节点段。

一个表有4个段

3. 区

区是由连续的页组成的,是物理上连续分配的一段空间,每个区的大小固定为1M, 区等于64个页,也就是64*16kb=1M

4. 页

innodb的最小物理存储分配单位是page,有数据页,回滚页,一般情况下,一个区由64个连续的页组成,页默认大小为16KB,如下表:

innodb_page_size 16384

mysql> show variables like '%page
%';
+--------------------------------------+-----------+
| Variable_name                        | Value     |
+--------------------------------------+-----------+
| innodb_doublewrite_pages             | 4         |
| innodb_log_compressed_pages          | ON        |
| innodb_max_dirty_pages_pct           | 90.000000 |
| innodb_max_dirty_pages_pct_lwm       | 10.000000 |
| innodb_page_cleaners                 | 1         |
| innodb_page_size                     | 16384     |
| innodb_stats_persistent_sample_pages | 20        |
| innodb_stats_transient_sample_pages  | 8         |
| large_page_size                      | 0         |
| large_pages                          | OFF       |
+--------------------------------------+-----------+
10 rows in set

页里面记录的是行信息,数据在innodb里是按照行来存储的。

本文转自 ID: 互联网老辛 更多内容关注公众号《极客运维之家》,扫码添加:

在这里插入图片描述

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 【MySQL】lnnoDB存储引擎你是怎么理解的?
    InnoDB逻辑存储单元主要分为表空间,段,区和页1. 表空间InnoDB所有的数据都是存放在表空间的,表空间又分为系统表空间和独立表空间MySQL5.7之后又多了临时表空间和通用表空间1) 系统表空间其中系统表空间,主要是以ibdata1来命名。 在安装数据库初始化数据库时就是系统在创建一个ibddata1的表空间文件,它会存储所有数据的信息以及回滚段(undo)的信息。innodb_data_file_path 负责定义系统表空间的路径,初始化大小,自动扩展策略,如下: 数据库MySQL8中,ibdata1默认大小是12Mmysql> show variables like '%data_file%';+----------------------------+------------------------+| Variable_name | Value |+----------------------------+------------------------+| innodb_data_file_path | ibdata1:12M:autoextend || innodb_temp_data_file_path | ibtmp1:12M:autoextend |+----------------------------+------------------------
  • MySQL理论——索引与事务、存储引擎MylSAM和lnnoDB
    索引的概念 1、数据库中的索引与书籍的目录类似 ●在一本书中,无须阅读整本书,利用目录就可以快速查找所需信息 ●书中的目录是一个词语列表,其中注明了包含各个词的页码 2、数据库索引 ●在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据 ●数据库中的索引是某个表中一列或者若干列值的集合,以及物理标识这些值的数据页的逻辑指针清单 索引的作用 1、设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率 2、特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成干倍 3、可以降低数据库的成本,并且索引还可以降低数据库的排序成本 4、通过创建唯一性索引保证数据表数据的唯一性 5、可以加快表与表之间的连接 6、在使用分组和排序时,可大大减少分组和排序时间 索引的分类 1、普通索引 ●这是最基本的索引类型,而且它没有唯一性之 类的限制 2、唯一性索引 ●这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一 3、主键 ●主键是一种唯一性索引, 但它必须指定为"PRIMARY KEY" 4、全文索引 ●MySQL从3.23.23版开始支持全文索引|和全文检索。在MySQL中全文索引|的索引|类型为FULLTEXT,全文索引可以在VARCHAR或者TEXT类型的列上创建 5、单列索引与多列索引
  • 数据库mysql面试题
    下面分享一些数据库mysql相关的面试题,看下你是不是都掌握了。 文章目录 数据库相关 数据库相关 mysql索引的数据结构,加索引的原则InnoDB和myiasm的区别,以及常见的mysql优化方案sql查询优化说说Mysql的sql优化mysql的索引,b+树索引是否支持范围查询,联合索引的失效情况开发中用了那些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。数据库索引原理mysql索引 B+树原理mysql索引是怎么实现的?b+树有哪些特点?真实的数据存在哪里? 哪些情况下建索引?解释下最左匹配原则? 现在一个表有三列a b c,组合索引(a,b,c)查询的时候where a like ? and b=? and c=?能用到这个组合索引吗?为什么explain执行计划看过没有?其中type字段都有哪些值?分别代表什么?你有哪些sql调优经验?分库分表应该怎么分?怎么解决数据迁移的问题?数据库索引,多级索引数据库事务的隔离级别有哪些?Mysql默认的隔离级别?不同的隔离级别是通过什么实现的?mysql的explain有用过吗?讲一讲数据库的慢查询?数据库的悲观和乐观锁都说一下吧,什么时候用乐观锁比较合适?什么时候用悲观锁呢?谈一下MySQL常见的两种存储引擎,适用场景-----
  • MySQL:指定索引+事务+存储引擎的配置 开发必备 天呐!为什么会有索引这种东西
    来来来,我告诉你为什么要有索引 索引的概念索引的作用 索引的分类普通索引创建的三种方式与删除创建唯一索引与创建的三种方式主键索引与创建的两种方式组合索引全文索引创建索引的原则依据 事务的概念事务的ACID特点事务控制语句Mysql事务处理两种方法实列 存储引擎的概念常用存储引擎MylSAM常用存储引擎lnnoDB企业选存储引擎的依据修改存储引擎 索引的概念 数据库索引是一个排序的列表,存储着索引值和这个值所对应的物理地址无须对整个表进行扫描,通过物理地址就可以找到所需数据是表中一列或者若干列值排序的方法需要额外的磁盘空间 讲一个现实的小故事:一早上你去医院排队,前面一共站了6个人,医护人员每搜索一个人的名字,数据库就全盘搜索一遍,不多也就10-20分钟,请问,排你的时候过去了多久 再讲一个小故事:你家住16楼,没有电梯索引,请问,在不考虑体力透支的情下,一层楼你需要爬2分钟,那么你从楼底到你家一共爬了多少分钟 索引的作用 数据库利用各种快速定位技术,能够大大加快查询速率当表很大或查询涉及到多个表时,可以成千上万倍地提高查询速度可以降低数据库的IO成本,并且还可以降低数据库的排序成本通过创建唯一性索引保证数据表数据的唯一性可以加快表与表之间的连接在使用分组和排序时,可大大减少分组和排序时间 索引的分类 普通索引创建的三种方式与删除 最基本的索引类型,没有唯一性之类的限制 先搭建环境
  • Java开发中常见的一些问题面试专题
    前言 字节跳动面试算法那是行业出了名的厉害。人狠话不多,上来就是一套算法“组合拳”,如果你不“抗揍”的话,连面试的机会都没有了。 面试字节跳动,拼多多这种大厂肯定躲避不了算法题的,相信面试过的小伙伴都知道,不管在现场面还是视频面肯定都会被问到算法,难度是要比笔试的时候容易些的。 不多扯,如果你是应届毕业生、学了一年多Java的知识或者是工作多年想回顾复习算法,我想你应该具备这些知识。这篇文档内容我花了一个多星期的时间来详解描述,经过不断的修改最终整理出这份精美的PDF。 MySQL基础开发篇 这部分的内容应该更合适那些刚入坑的朋友们或者是对于基础部分掌握不牢固的朋友,因此有一定经验的或者基础不错的可以自动跳至下一章内容阅读,这部分我仅把目录内容截图展示。 MySQL的优化以及管理维护 MySQL作为一款关系型数据库,SQL语句的优化是尤其重要的一件事,SQL语句写的好不好也就决定了从MySQL中拿数据的速度,想想问什么别人只要3s,而你要30s(打比方) MySQL性能调优与架构设计专题 在这一专题中,着重讲解了MySQL的性能优化以及架构设计,从本质上让你对于MySQL的理解以及原则性的内容掌握的更加深刻,也就是我们所说的技术深度的体现。 在这个专题中,我们主要就是分为三个部分: 基础性能优化架构设计 基础篇: MySQL的基本介绍
  • 面试题
    还有很多没有记录。 支付宝 1.jvm的内存模型 一般jvm分为哪几块 2.jvm怎么GC 3.Mysql数据的存储引擎 4.mysql数据库搜索引擎的结构 b+树 5.RPC的原理 6.有用过RPC框架吗?如dubbo这些。 7.加密算法分为哪几种 可逆和不可逆 8.单机服务如何优化,有用过哪些优化方式 代码优化,虚拟机参数调整 9.AOP是啥 你用过吗? 医慧科技 1.Redis本身有多少个线程 2.怎么利用Redis实现分布式锁 超时设置+延长超时策略+另外一个原子变量(setnx)记录持有锁的线程。 3.分布式缓存一致性 双删策略 要考虑主从redis节点问题 脏读问题 4.Mybatis怎么实现批量更新,有几种方式 5.怎么运用spring的事务 6.平常怎么创建线程 平常怎么实现并发 7.数据库有一个联合索引 A,B,C, 如果有一个查询条件A=1,C=3,那索引有效吗? 8.哪些场景会使索引无效 亿咖通 1.常用设计模式 代理模式和装饰模式的差别 2.Spring 事务怎么实现的 海康威视 1.如何实现rabbitmq的高可用高负载 2.如果一个rabbitmq节点挂掉了 怎么实现数据不丢失 3.一般怎么创建线程 4. 自带的线程池有哪些问题 5.一般怎么实现并发 6.使用锁的话 一般用哪些锁 Lock接口的实现类 7.自己说那个的一些策略 涂鸦智能 1
  • 火爆Github!阿里高工熬夜15天码出Java160K字面试宝典 (全是重点)
    Java面试 大家都知道,现在的Java面试是越来越难了!主要原因无非是两个: 随着Java这个行业的兴起,不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java!大量人才涌入,导致岗位竞争越来越大,面试也就越来越难!另外一个就是这两年的疫情影响,很多公司都宣布倒闭、裁员。加上互联网行业内卷的推动,面试造火箭工作拧螺丝已经是一个很常见的现象了! 最近也是一直有粉丝朋友私信我说,金三银四都快结束了,LZ有没有一份内容全面,题目高频的面试题库,最近面试老挂,需要系统的梳理一下!我的内心:这我上哪儿整去啊!没办法好歹也是坐拥5W粉丝的小博主,粉丝就是我的上帝,于是熬夜18天为大家整理了一份Java全栈面试进阶宝典!希望对大家有所帮助! 不多bb,来看 由于整篇文档有200多页,就不能全部为大家展示出来了,需要的小伙伴点击传送门即可!! Java全栈面试进阶宝典 JavaOOP/集合/泛型/异常/lO与NIO/反射/序列化/注解面试题 什么是OOP?类与对象的关系?Java中有几种数据类型标识符的命名规则。instanceof关键字的作用什么是隐式转换,什么是显式转换Char类型能不能转成int类型?能不能转化成string类能不能转成double类型Java中异常分为哪两种?异常的处理机制有几种?如何自定义一个异常try
  • 阿里高工熬夜18天码出Java150K字面试宝典,却遭Github全面封杀
    Java面试 大家都知道,现在的Java面试是越来越难了!主要原因无非是两个: 随着Java这个行业的兴起,不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java!大量人才涌入,导致岗位竞争越来越大,面试也就越来越难!另外一个就是这两年的疫情影响,很多公司都宣布倒闭、裁员。加上互联网行业内卷的推动,面试造火箭工作拧螺丝已经是一个很常见的现象了! 最近也是一直有粉丝朋友私信我说,金三银四都快结束了,LZ有没有一份内容全面,题目高频的面试题库,最近面试老挂,需要系统的梳理一下!我的内心:这我上哪儿整去啊!没办法好歹也是坐拥5W粉丝的小博主,粉丝就是我的上帝,于是熬夜18天为大家整理了一份Java全栈面试进阶宝典!希望对大家有所帮助! 不多bb,来看 由于整篇文档有200多页,就不能全部为大家展示出来了,需要的小伙伴添加VX【MXM9809】即可获取文档免费下载方式! Java全栈面试进阶宝典 JavaOOP/集合/泛型/异常/lO与NIO/反射/序列化/注解面试题 什么是OOP?类与对象的关系?Java中有几种数据类型标识符的命名规则。instanceof关键字的作用什么是隐式转换,什么是显式转换Char类型能不能转成int类型?能不能转化成string类能不能转成double类型Java中异常分为哪两种
  • 不是我吹!看完阿里高工码出 Java150K 字面试宝典,进大厂稳了
    Java面试 大家都知道,现在的Java面试是越来越难了!主要原因无非是两个: 随着Java这个行业的兴起,不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java!大量人才涌入,导致岗位竞争越来越大,面试也就越来越难! 另外一个就是这两年的疫情影响,很多公司都宣布倒闭、裁员。加上互联网行业内卷的推动,面试造火箭工作拧螺丝已经是一个很常见的现象了! 最近也是一直有粉丝朋友私信我说,金三银四结束了,LZ有没有一份内容全面,题目高频的面试题库,最近面试老挂,需要系统的梳理一下!我的内心:这我上哪儿整去啊!没办法好歹也是坐拥5W粉丝的小博主,粉丝就是我的上帝,于是熬夜18天为大家整理了一份Java全栈面试进阶宝典!希望对大家有所帮助! 不多bb,来看 由于整篇文档有200多页,就不能全部为大家展示出来了,需要的小伙伴可以见下图添加上小助手即可获取到了 Java全栈面试进阶宝典 JavaOOP/集合/泛型/异常/lO与NIO/反射/序列化/注解面试题 什么是OOP? 类与对象的关系? Java中有几种数据类型标识符的命名规则。 instanceof关键字的作用 什么是隐式转换,什么是显式转换 Char类型能不能转成int类型? 能不能转化成string类能不能转成double类型 Java中异常分为哪两种? 异常的处理机制有几种
  • 985毕业,面试阿里、字节、腾讯大厂拿offer,最终上岸蚂蚁
    前言 背景 个人211本985硕,皆科班,271 java实习半年。 春招虽然惨淡了一点,但是对于有能力的人来说还是能找到工作的,这不,我现在已经上岸蚂蚁了,虽然如此,但是目前来说需要学习的知识还有很多,现在在跟着马老师和左神在学习提升自己的技术 面试情况 阿里 JAVA研发 提前批 阿里云团队A 二面过(p8面) 阿里云团队B 三面过(p9面) 蚂蚁团队C 三面过(p8面)钉钉 一面过系统开放之后确定内推到蚂蚁团队C。笔试0ac,补了一次笔试 测评不清楚,4.19拿到蚂蚁意向书。 字节 后端开发 教育业务暑期实习 三面挂后投了EA的java开发日常实习 二面挂继续投产品基础架构后端开发日常实习 一面挂(对算法要求高,上来就两个算法题,没有及时做出来)顺延到创新业务的暑期实习 后端开发 笔试310/400 直接笔试挂(应该前面面评不好+hc比较少+笔试简单,普遍高分) 腾讯+微软 腾讯捞了两次 技术栈不合适 第一次是php 第二次c++的 都是一面挂微软 技术栈不合适 二面挂 美团 笔试接近0.5ac 笔试太差 面试一面的时候感觉表现还行,面试官反馈也还好。综合一面还是挂了。 阿里云 阿里云 团队A 一面 2020.2.28 晚上 8点 1h30min 1.说说你做的项目里你最满意的部分(细化提问 我提到了设计模式) 2.说说你会哪些数据库
  • 阿里高工熬夜18天码出Java150K字面试宝典,却遭Github全面封杀
    Java面试 大家都知道,现在的Java面试是越来越难了!主要原因无非是两个: 随着Java这个行业的兴起,不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java!大量人才涌入,导致岗位竞争越来越大,面试也就越来越难!另外一个就是这两年的疫情影响,很多公司都宣布倒闭、裁员。加上互联网行业内卷的推动,面试造火箭工作拧螺丝已经是一个很常见的现象了! 最近也是一直有粉丝朋友私信我说,金三银四都快结束了,LZ有没有一份内容全面,题目高频的面试题库,最近面试老挂,需要系统的梳理一下!我的内心:这我上哪儿整去啊!没办法好歹也是坐拥5W粉丝的小博主,粉丝就是我的上帝,于是熬夜18天为大家整理了一份Java全栈面试进阶宝典!希望对大家有所帮助! 不多bb,来看 由于整篇文档有200多页,就不能全部为大家展示出来了,需要资料的小伙伴,点赞加收藏,关注我之后添加小助理vx:1426687161 即可获取免费下载方式 Java全栈面试进阶宝典 JavaOOP/集合/泛型/异常/lO与NIO/反射/序列化/注解面试题 什么是OOP?类与对象的关系?Java中有几种数据类型标识符的命名规则。instanceof关键字的作用什么是隐式转换,什么是显式转换Char类型能不能转成int类型
  • 终于拿到了腾讯云架构师整理总结的MySQL性能优化和高可用架构实践笔记,太强了!
    作为最流行的开源数据库软件之一,MySQL数据库软件已经广为人知了。当前很火的Facebook、腾讯、淘宝等大型网站都在使用MySQL的数据库。 互联网行业的多数业务场景有非常明显的特点:用户量大、引发数据容量大、并发高、业务复杂度适中。MySQL数据库产品初期的定位就是Web应用的数据服务,故几乎所有互联网企业都使用MySQL数据库产品,有很多企业几乎全部使用MySQL提供的数据服务。 选择开源产品是国家和企业的主流选择,而开源MySQL数据库在国内外应用最广泛,从业的技术人员也最多,它成为“去IOE”分布式技术架构中最关键的关系型数据库产品。数据库系统作为IT业务系统的核心,其高可用性和容灾能力对整个业务系统的连续性和数据完整性起着至关重要的作用,是企业正常运营的基石。 互联网公司里面几乎很少有公司不用MySQL,国内互联网巨头都在大规模使用MySQL。如果把MySQL比喻成数据库界的一条巨龙,则性能优化和高可用架构设计实践就是点睛之笔。 本文将详细讲解MySQL 5.7高可用和性能优化技术,细致梳理思路,并与真实生产案例相结合,通过原理阐述到实战部署,帮助读者将所学知识点运用到实际工作中。 本文适合有一定基础的MySQL数据库学习者、MySQL数据库开发人员和MySQL数据库管理人员阅读。 目录 MySQL架构介绍; MySQL作为目前互联网工作的主流数据库
  • MySQL的逻辑架构和二进制日志的操作
    1. mysql逻辑分层   SQL语句在执行的过程中经历了什么?要解答这个问题,就要学习一下mysql的架构知识了,同时学习它,我们还可以更好的理解mysql是如何工作的。有如下图:   对于上面这幅图,我们可以理解成sql语句的执行到返回结果之间经历的种种关卡。对此我们可以分为三层,客户端层(可以是PHP,Java程序这些,也就是说,只要能连接数据库,并且能够操作数据库的软件我们就叫客户端),server层(mysql的核心部分)和存储引擎层。那么我们就对其来一一介绍吧!   1)连接器:连接器是专门来为客户端的请求做连接处理的,比如建立连接,获取权限等。对应的指令如下: mysql -h 主机名 -u 用户名 -p密码 这个指令我们再熟悉不过了,不就是连接指令嘛,其中,指令中的mysql就是bin目录下的mysql.exe工具,也就是说,我们如果想跟远程mysql连接,就要借助该工具,在指令中的体现就是一开始写上mysql,后面才是写-h这些,写完后,回车,客户端就会先跟服务器进行TCP的三次握手,然后再把你的指令发送到指定的服务器那里去,找到之后,对方的门卫(一个线程)连接器就会把你拦下来进行盘问,看看你的用户名和密码有没有错(也可以看你的SSL证书),如果有,不好意思,连接不成功,如果没有,ok,我就会去mysql系统数据库里面的权限表中看看你拥有哪些权限
  • 07:MySQL innodb引擎详解
    1.简单介绍主要的存储引擎 (1)innodb 通过使用MVCC获得高并发性,并且实现了sql的四种隔离级别,默认为可重复读。同时,使用了next-key-lock解决幻读问题,还提供了插入缓冲、二次写、自适应哈希索引、预读等高性能和高可用的功能。 (2)mylsam MyISAM存储引擎不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用。在MySQL 5.5.8版本之前MyISAM存储引擎是默认的存储引擎 (3)memory Memory存储引擎(之前称HEAP存储引擎)将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表。Memory存储引擎默认使用哈希索引,而不是我们熟悉的B+树索引。 2.innodb的体系架构 InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作: (1)维护所有进程/线程需要访问的多个内部数据结构。 (2)缓存磁盘上的数据,方便快速地读取,同时在对磁盘文件的数据修改之前在这里缓存(change buffer)。 (3)重做日志(redo log)缓冲。 ①后台进程 InnoDB存储引擎是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务。 1.Master Thread Master
  • 深入理解JVM:5年crud经验,90%的人看完都说好
    前言 一位小伙伴准备了许久的阿里Java面试,原以为能够顺利拿下offer,但在第三面还是被摁在地上反复摩擦,丧气一段时间后,小伙伴调整了心态重新尝试了一下,最终拿下了offer,今天小编把这位小伙伴遇到的面试题分享出来,希望能对即将面试的小伙伴有所帮助。 01 MySQL相关 1.1 面试问题 MySQL有哪些锁?解释一下ACID都是什么Innodb中索引的实现B+树AUTO_INCREMENT原理(考察并发情况)数据库的索引有哪几种?为什么要用B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC机制了解不?MVCC机制有什么问题?怎么去解决这个问题?mysql慢语句调优做过吗?说说你是怎么做的? 1.2 我的MySQL学习笔记 (1)20个高频MySQL面试知识点 事务四大特性(ACID)原子性、一致性、隔离性、持久性?事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景?查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序?什么是临时表,临时表什么时候删除?MySQL B+Tree索引和Hash索引的区别
  • wwwww
    数据库 MySQL 索引使用有哪些事项呢?说说分库与分表的设计日常工作中你是怎么优化SQL的?MySQL 遇到过死锁问题吗,你是如何解决的?InnoDB与MyISAM的区别数据库索引的原理,为什么要用 B+树,为什么不用二叉树?聚集索引与非聚集索引的区别limit 100000 加载很慢的话,你是怎么解决的呢?如何选择合适的分布式主键方案呢?事务的隔离级别有哪些?MySQL的默认隔离级别是什么?什么是幻读,脏读,不可重复读呢?在高并发情况下,如何做到安全的修改同一行数据?数据库的乐观锁和悲观锁。SQL优化的一般步骤是什么,怎么看执行计划(explain),如何理解其中各个字段的含义。select for update有什么含义,会锁表还是锁行还是其他。MySQL事务得四大特性以及实现原理如果某个表有近千万数据,CRUD比较慢,如何优化。如何写sql能够有效的使用到复合索引。mysql中in 和exists的区别。数据库自增主键可能遇到什么问题。MVCC熟悉吗,它的底层原理?数据库中间件了解过吗,sharding jdbc,mycat?MYSQL的主从延迟,你怎么解决?说一下大表的优化方案什么是数据库连接池?为什么需要数据库连接池呢?一条SQL语句在MySQL中如何执行的?InnoDB引擎中的索引策略,了解过吗?数据库存储日期格式时,如何考虑时区转换问题?一条sql执行过长的时间
  • 虎牙Java后台实现三次面经
    开篇:Java后台实习却不怎么问Java相关,你能怎么办呢? 虎牙一面:(30多分钟) 自我介绍面试官开始描述他们要进行的项目是什么(这个需要好好的记住和理解,不懂就问,因为后面的面试官都会再次问你,知不知道将来需要做什么项目的)项目介绍(背景,优势,亮点,你在中干了什么,有什么挑战)其中夹杂着为什么选择Neo4j作为数据库,Neo4j和其他非关系型数据库有什么亮点问另外一个管理系统项目(背景,亮点)具体强退登录是怎么实现,用什么存储sessionID,为什么用这个存储MYSQL索引相关问题MYSQL事务特性在什么地方使用触发器你是怎么优化MySQL语句的TCP特点与三次握手有没有进行过压测。 虎牙二面:自我介绍项目介绍(背景,怎么实现的,与其他类似的项目比较,优势,缺点,你干了什么)口头描述怎么栈实现(数据,链表(提醒用双向链表))MYSQL中InnoDB和MyISAM的区别使用Select Count(*)在InnoDB和MyISAM引擎中哪个更快事务隔离级别InnoDB支持哪几种索引(哈希,B+)哈希与B+两者区别time_wait出现在TCP什么阶段为什么要存在time_wait,如果没有会出现什么问题如果服务器出现大量time_wait,这时候要怎么解决(也就是上一问出现问题的解决方法)TCP/IP建立的链接是通过什么数据进行唯一标识(当时没听懂,其实就是问
  • 2021高级JAVA开发面试题精选
    面试过程是一个由浅入深的过程,面试官先给求职者抛出一个相对简单的问题,然后通过一环套一环的追问深入考察求职者对知识点的理解掌握程度。 如下是一个实际的关于redis知识点的面试场景: 面试官:你用过redis吗? 你:用过 面试官:你知道redis是单线程还是多线程呢? 你:在4.0之前是单线程,但是在4.0之后开始支持多线程了。 面试官:为什么redis使用了单线程还是那么快? 你:单线程可以避免多线程竞争,内存操作,I/O多路复用机制... 面试官:Redis是如何保证数据不丢失的? 你:redis持久化主要通过AOF、RDB、以及4.0后提供的混合持久化方式实现的 ...... 通过上面的例子可以看出,一个知识点可以牵扯出很多关联的小知识点,而要掌握所有的面试点是很难的,所以咱们不要轻易说吊打面试官了,一不小心就会被面试官吊起来打,毕竟问题永远比方法多,对吧。 本文结合本人参与的相关面试以及作为面试官对别人的面试,精心挑选十几道高级开发面试题,每个题目都涵盖很多知识点。 如果你是面试官,可以将此文涉及的面试点纳入自己的面试题库,借此考察求职者的技术深度; 如果你是求职者,可以通过此文的面试点准备面试,按我个人的经验来说,虽不说100%通过,如果都能答好的话通过概率起码85%以上。 如果你不是面试官,也不是求职者,也可以通过此文的面试点夯实技术水平,以文促­
  • 《MySQL》系列 - select 查询语句到底是怎么执行的?
    mysql 作为一个关系型数据库,在国内使用应该是最广泛的。也许你司使用 Oracle、Pg 等等,但是大多数互联网公司,比如我司使用得最多的还是 Mysql,重要性不言而喻。事情是这样的,某天我司小胖问我执行select * from table,数据库底层到底发生了啥?从而我们得到数据呢?以下把我给问住了,为此我查阅了大量的书籍、博客。于是就有了这篇文章。假设现在我有张 user 表,只有两列,一列 id 自增的,一列 name 是 varchar 类型。建表语句是这样的:CREATE TABLE IF NOT EXISTS `user`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;小胖的问题就是下面这个语句的执行过程。select * from user where id = 1;01 mysql 架构概览要想理解这个问题就必须要知道 mysql 的内部架构。为此,我画了张 mysql 的架构图(你也可以理解为 sql 查询语句的执行过程),如下所示:首先 msql 分为 server 层和存储引擎层两个部分。server 层包括四个功能模块,分别是:连接器、查询缓存、优化器
  • 2021年Java面试心得:鸿蒙开发语言是java
    开头 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。在项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。 分享第一份Java基础-中级-高级面试集合 Java基础(对象+线程+字符+接口+变量+异常+方法) Java中级开发(底层+Spring相关+Redis+分布式+设计模式+MySQL+高并发+锁+线程) Java高级“程序猿”(高并发+Redis缓存+分布式+消息队列+高可用+微服务+分库分表+读写分离) 高并发系列(经典面试题:如何设计一个高并发系统?)Redis缓存系列分布式系列消息队列系列高可用系列微服务系列分库分表系列读写分离系列… … Java高分面试指南-25分类227页1000+题50w+字解析 题目太多,我就不一一列举了,举例部分大家最感兴趣的 第一分类 JavaOOP面试题 第二分类 Java集合/泛型面试题 1、ArrayList和linkedList的区别2、 HashMap和HashTable的区别3、Collection包结构,与Collections的区别4、泛型常用特点 (待补充)5、说说List