面试必问的 MySQL 知识点,你还有哪些没准备好,赶紧收藏脑图!(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Hello,大家好,我是鸭血粉丝,虽说今年的大环境不是很好,但是现在毕竟是金三银四,有些公司还是在招聘的。MySQL 作为我们 Java 工程师最常用的数据库,不管是在日常的工作中还是面试中,我们都必须要对 MySQL 常见的一些知识有很好的储备,这样在面试的过程中才可以做到得心应手。下面阿粉从 MySQL 最高频的几个知识点给大家介绍一下。

MySQL 的分区

3.jpg

为什么分区

为什么会有分区,以及什么时候我们需要进行分区呢?我们都知道当 MySQL 单表的数量级达到一定的程度的时候,查询就会很慢。那么针对这种情况我们需要怎么处理呢?除了本身查询语句的优化之外,我们能想到的就是分库分表以及分区了。

分库分表是需要在应用层面上支持的,而分区是 MySQL 层面上支持的,在物理上将数据分成多个文件进行存储,从而提高查询速度。

4.jpg

如上图表 partition_sys_log_op 是采用 InnoDB 引擎并且创建了八个分区的表结构。语句如下

CREATE TABLE `partition_sys_log_op` (
  `id` INT ( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `create_time` datetime DEFAULT NULL COMMENT '操作时间',
  `elapsed_time` INT ( 11 ) DEFAULT NULL COMMENT '耗用时间',
  `exec_sql` MEDIUMTEXT CHARACTER 
  SET utf8 COMMENT '执行的语句',
  `user_id` INT ( 11 ) DEFAULT NULL COMMENT '执行人id',
  `user_name` VARCHAR ( 45 ) CHARACTER 
  SET utf8 DEFAULT NULL COMMENT '执行人名称',
  `exec_type` VARCHAR ( 45 ) CHARACTER 
  SET utf8 DEFAULT NULL COMMENT '动作,delete update insert',
  `exec_table` VARCHAR ( 45 ) CHARACTER 
  SET utf8 DEFAULT NULL COMMENT '操作表',
  PRIMARY KEY ( `id` ),
  KEY `idx_index` ( `create_time`, `user_id`, `user_name`, `exec_table` ) 
) ENGINE = INNODB AUTO_INCREMENT = 1 COMMENT = '系统操作日志' PARTITION BY KEY ( ) PARTITIONS 8;

分区的类型

  1. Range:指定范围内分区:PARTITION p1 VALUES LESS THAN (100);
  2. List:离散值分区,数据在枚举范围内:partition p1 values in (2,4,6,8,0) ;
  3. Hash:计算单个列的 Hash值,然后指定分区数量,进行分区:PARTITION BY HASH(id) PARTITIONS 4;
  4. Key:计算单个或者多个列的 hash 值,然后指定分区数量,进行分区:PARTITION BY KEY(s1)  PARTITIONS 10; 不传列名默认用主键。

Explain

5.jpg

前面提到我们经常需要对 sql 进行优化,那么如何对一条 sql 进行优化呢?我们只要在普通的 sql 前面,加上关键字 explain 即可看执行计划。根据执行计划,我们可以看到该 sql 的执行情况,以及是否采用索引以及采用的是哪个索引。例如

EXPLAIN SELECT COUNT(*) FROM partition_sys_log_op WHERE create_time >= '2020-12-03 00:00:00';


6.jpg

详细的 explain 的介绍可以看公号之前的文章。MySQL 之 Explain 输出分析,这里就不展开了,感兴趣的朋友可以去看看。

阿粉友情提示:更详细的脑图大家可以关注公众号,在后台回复【MySQL脑图】获得。

写在最后


最后(知识星球现在续费只要 6 折)

现在阿粉诚邀你加入我们的知识星球,这里有 1700+ 优秀的人与你一起进步,如果你是小白那你是稳赚了,很多业内经验和干货分享给你;如果你是大佬,那可以进来我们一起交流分享你的经验,说不定日后我们还可以有合作,给你的人生多一个可能。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
6月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
323 5
|
4月前
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
6月前
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
5月前
|
缓存 NoSQL Java
校招 Java 面试常见知识点及实战案例全解析
本文全面解析了Java校招面试中的常见知识点,涵盖Java新特性(如Lambda表达式、、Optional类)、集合框架高级应用(线程安全集合、Map性能优化)、多线程与并发编程(线程池配置)、JVM性能调优(内存溢出排查、垃圾回收器选择)、Spring与微服务实战(Spring Boot自动配置)、数据库与ORM框架(MyBatis高级用法、索引优化)、分布式系统(分布式事务、缓存应用)、性能优化(接口优化、高并发限流)、单元测试与代码质量(JUnit 5、Mockito、JaCoCo)以及项目实战案例(电商秒杀系统、社交消息推送)。资源地址: [https://pan.quark.cn/s
192 4
|
6月前
|
SQL 存储 关系型数据库
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
|
5月前
|
存储 设计模式 算法
校招 Java 面试常见知识点汇总及备考指南
本文全面解析校招Java面试常见知识点,涵盖Java基础、集合框架、多线程并发、JVM等内容。从面向对象特性(封装、继承、多态)到数据类型与包装类,再到字符串处理和关键字用法,逐一剖析。集合框架部分深入讲解List、Set、Map接口及其常用实现类的特性和应用场景。多线程章节探讨线程创建、同步机制及线程池的使用。JVM部分聚焦内存区域、垃圾回收机制和类加载过程。结合实际案例,助你轻松应对校招面试!资源地址:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
136 0
|
8月前
|
消息中间件 NoSQL 关系型数据库
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
去哪面试:1Wtps高并发,MySQL 热点行 问题, 怎么解决?
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

推荐镜像

更多