[个人感悟] MySQL应该考察哪些问题?


前言

数据存储一直是软件开发中必不可少的一环, 从早期的文件存储txt, Excel, Doc, Access, 以及关系数据库时代的MySQL,SQL Server, Oracle, DB2, 乃至最近的大数据时代f非关系型数据库:Hadoop, HBase, MongoDB. 此外还有顺序型数据库InfluxDB, 图数据库Neo4J, 分布式数据库TiDB, SharingSphere等等. 数据库在当下的环境开发中可谓是多种多样, 五花八门.

Java开发的项目, 基本已中小型为主, 作为千万级开源数据库的MySQL则是大多数项目的首选.此外, MySQL作为传统关系型数据库的代表, 正好适合考察SQL及其相关知识的掌握情况. 其基本考察点主要涉及如下几个问题: MySQL基本架构, MySQL基本数据类型&DML&DDL语法, SQL实战, 索引, 事务, 分库分表.


问题

问题-架构

  • 能聊聊MySQL的基本架构么?

  • MySQL支持的存储引擎有哪些, 你主要使用过哪种? 说说你的理解?

  • 能聊聊InnoDB存储引擎的基本架构么?

问题-索引

  • 什么是索引?

  • MYSQL内所有的基本种类有哪些?不同分类标准.

  • MySQL索引的基本实现原理。

  • MySQL如何高效的创建和选择索引?

  • MySQL内索引失效的原因有哪些?

  • MySQL内如何知道是否命中索引? explain关键字用过么? 需要注意哪些关键字?

  • 最左依赖原则-实战1\] 表A有字段a,b,c, 且有idx(a,b,c), 试问select \* from table where a='a' and ''b'=b and c='c' 会命中索引么?

  • 最左依赖原则-实战3\] 表A有字段a,b,c,d 且有idx(a,b,c), 试问select \* from table where ''b'=b and c='c' 会命中索引么?

  • 什么是MySQL事务?

  • MySQL事务基本特性有哪几个? 各是如何保证的?

    • 如何保证事务的原子性?
    • 如何保证事务的一致性?
    • 如何保证事务的隔离性?
    • 如何保证事务的持久性?
  • 脏读/幻读/不可重复读\]MySQL内事务的隔离级别有哪几种? 各会产生什么问题? 如何解决? * 了解MySQL内的当前读和快照读么? 其是如何实现的? * 什么是幻读? 如何解决幻读问题? * 什么是脏读? 如何解决脏读问题? * 什么是不可重复读? 如何解决不可重复读问题? * MySQL内读读并发会产生什么问题? 读写并发么? 写写并发呢? \[注意事务的隔离级别

  • 你们生产中, 使用的事务的隔离级别是哪种? 各有什么优劣性? 如何查看? 如何修改?

    • 读已提交和可城重复度皆可. 但是要说出原理?
  • 聊聊你对MySQL内日志文件的理解?

  • MySQL 内 binlog, undolog, redolog 写的现后顺序?

  • MySQL 内 undolog, redolog 写的现后顺序?

  • 什么是MVCC? 其如何实现的? 谈谈你对他的理解?

问题-锁

锁通常是作为事务的引申存在的. 在InnoDB存储引擎中, 读已经提交事务级别下. 比如间隙锁, 临键锁 通常是为了解决幻读问题的。(mvcc无法解决的问题) 其余事务级别下通常存在的是记录锁, 也叫行锁.

  • MySQL 内, 锁的种类有哪些?

  • 什么是记录锁, 间隙锁, 临界锁?

  • InnoDB, 读已经提交级别下, 表tableA(a int, b int) a非主键., select * from tableA where a=10 会创建什么类型的锁?

  • InnoDB, 读已经提交级别下, 表tableA(a int, b int) a为主键., select * from tableA where a=10 会创建什么类型的锁?

  • 如何查看InnoDB引擎执行操作时是否加了何种类型的锁?

  • 什么情况会产生MySQL内死锁?

  • 如何查看MySQL死锁问题日志?

  • 如何解决MySQL内死锁问题?

问题-分库分表

如不涉及此项, 可略.

相关推荐
l1t1 天前
利用DeepSeek实现服务器客户端模式的DuckDB原型
服务器·c语言·数据库·人工智能·postgresql·协议·duckdb
MarkHard1231 天前
如何利用redis使用一个滑动窗口限流
数据库·redis·缓存
island13141 天前
【Redis#10】渐进式遍历 | 数据库管理 | redis_cli | RES
数据库·redis·bootstrap
心想事成的幸运大王1 天前
Redis的过期策略
数据库·redis·缓存
倔强的石头_1 天前
CentOS 上安装KingbaseES(ISO包)详细教程
数据库
2401_897930061 天前
使用Docker轻松部署Neo4j图数据库
数据库·docker·neo4j
诗句藏于尽头1 天前
Django模型与数据库表映射的两种方式
数据库·python·django
寻星探路1 天前
数据库造神计划第六天---增删改查(CRUD)(2)
java·大数据·数据库
盖世英雄酱581361 天前
Read timed out问题 排查
java·数据库·后端
云动雨颤1 天前
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
数据库·spring boot·tomcat