栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

计算机面经--【MySQL篇】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机面经--【MySQL篇】

提示:本文章的内容来源于自己所学的一些知识以及网络

文章目录
  • 前言
  • 1、MySQL常用的存储引擎有哪些?了解过吗?
  • 2、什么是索引?MySQL常见的索引数据结构?Hash索引和B+树索引的区别,以及应用场景?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

博主理解:其实在Java后端面试中,所谓的“八股文”并不是让大家完整地背下来,只是将自己学会的知识,用自己的语言讲给面试官听,面试官希望听到的是你对这个知识点的理解,深度。“八股文”并不是一门技术,希望各位道友不要过多地痴迷,能够解决Bug以及对业务逻辑采用合适的解决方案才是一个程序员基本素养。这个面经系列我会一直更新下去,如果对你有帮助,麻烦点个关注,谢谢!


1、MySQL常用的存储引擎有哪些?了解过吗?

关键字:支持事务、行级锁、外键

  • InnoDB
    InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。
    • DML操作遵循ACID模型,支持事务
    • 行级锁,提高并发访问性能;
    • 支持外键 FOREIGN KEY约束,保证数据的完整性和正确性
    • 文件:xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构、数据和索引。
    • 逻辑存储结构(段–>区–>页–>行
      • 表空间:InnoDB存储引擎逻辑结构的最高层,ibd文件其实就是表空间文件,在表空间中可以包含多个Segment段。
      • 段 : 表空间是由各个段组成的, 常见的段有数据段、索引段、回滚段等。InnoDB中对于段的管理,都是引擎自身完成,不需要人为对其控制,一个段中包含多个区。
      • 区 : 区是表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为16K, 即一个区中一共有64个连续的页。
      • 页 : 页是组成区的最小单元,页也是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为 16KB。为了保证页的连续性,InnoDB 存储引擎每次从磁盘申请 4-5 个区。注意:B+树中的叶子节点存储的数据,实际上是页,页的逻辑结构下面会详细介绍
      • 行 : InnoDB 存储引擎是面向行的,也就是说数据是按行进行存放的,在每一行中除了定义表时所指定的字段以外,还包含两个隐藏字段。
  • MyISAM
    • 不支持事务,不支持外键
    • 支持表锁,不支持行锁
    • 访问速度快

关于InnoDB的页结构如下:

可以看出在页中对应着四条记录,页目录记录的是相应的主键索引最大值,这也就解释了在叶子节点中实际上存的是页(page),而每个页节点中存的才是表中的一行行数据,这里还牵涉到B+树在三层的时候能够存在多少行数据的问题,如下:

假设每个页的主键索引为int型,占用4字节,每页的地址占用6字节,加起来就是10字节,我们知道在B+树中,非叶子节点是不存数据的,只存索引,对应着是图中的绿色框,每页的容量固定为16kb,则绿色的框(第一层)可以管理1638页,这样就不难计算出两层的B+树能够存储多少行数据了。假设一页能够存8条数据(每个数据占用2kb)那么两层的B+树能够存数据1638*(16kb/2kb)=13104条数据,那么三层B+树存储的数据量为1638*13104=21464352,也就是两千万条数据,一般来讲希望MySQL的数据量不要超过两千万行,并且B+树不要超过三层,否则会导致查询效率变慢,此时就要采取分库分表的措施(后面我会介绍分库分表的知识点)。

2、什么是索引?MySQL常见的索引数据结构?Hash索引和B+树索引的区别,以及应用场景?

关键字:索引、哈希索引、B+树索引

二、使用步骤 1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号