备战春招之MySQL:历年高频面试真题梳理及众多学习笔记和书籍

2022-10-11 21:34:15 142 0
魁首哥

这次就不卖关子了,直接步入主题吧~~

01 数据库历年高频真题梳理

  • 1、 MySQL 中有哪几种锁?
  • 2、MySQL 中有哪些不同的表格?
  • 3、简述在 MySQL 数据库中 MyISAM InnoDB 的区别
  • 4、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
  • 5、 CHAR VARCHAR 的区别?
  • 6、 主键 和候选键有什么区别?
  • 7、myisamchk 是用来做什么的?
  • 8、如果一个表有一列定义为 TIMESTAMP,将发生什么?
  • 9、你怎么看到为表格定义的所有 索引
  • 10、LIKE 声明中的%和_是什么意思?
  • 11、列对比运算符是什么?
  • 12、BLOB 和 TEXT 有什么区别?
  • 13、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
  • 14、MyISAM 表格将在哪里存储,并且还提供其存储格式?
  • 15、MySQL 如何优化 DISTINCT?
  • 16、如何显示前 50 行?
  • 17、可以使用多少列创建索引?
  • 18、NOW()和 CURRENT_DATE()有什么区别?
  • 19、什么是非标准字符串类型?
  • 20、什么是通用 SQL 函数?
  • 21、MySQL 支持事务吗?
  • 22、MySQL 里记录货币用什么字段类型好
  • 23、MySQL 有关权限的表都有哪几个?
  • 24、列的字符串类型可以是什么?
  • 25、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
  • 26、锁的优化策略
  • 27、索引的底层实现原理和优化
  • 28、什么情况下设置了索引但无法使用
  • 29、实践中如何优化 My SQL
  • 30、优化数据库的方法
  • 31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
  • 32、数据库中的事务是什么?
  • 33、SQL 注入漏洞产生的原因?如何防止?
  • 34、为表中的字段选择合适得数据类型
  • 35、存储时期
  • 36、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题:
  • 37、解释 MySQL 外连接、内连接与自连接的区别
  • 38、Myql 中的事务回滚机制概述
  • 39、SQL 语言包括哪几部分?每部分都有哪些操作关键字?
  • 40、完整性约束包括哪些?
  • 41、什么是锁?
  • 42、什么叫视图?游标是什么?
  • 43、什么是存储过程?用什么来调用?
  • 44、如何通俗地理解三个范式?
  • 45、什么是基本表?什么是视图?
  • 46、试述视图的优点?
  • 47、 NULL 是什么意思
  • 48、主键、外键和索引的区别?
  • 49、你可以用什么来确保表格里的字段只接受特定范围里的值?
  • 50、说说对 SQL 语句优化有哪些方法?(选择几条)

1、MySQL 中有哪几种锁?

· 表级锁 :开销小,加锁快;不会出现 死锁 ;锁定粒度大,发生锁冲突的概率最高,并发度最低。

· 行级锁 :开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

· 页面锁: 开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

2、MySQL 中有哪些不同的表格?

共有 5 种类型的表格:

· MyISAM

· Heap

· Merge

· INNODB

· ISAM

3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别

MyISAM:

· 不支持事务,但是每次查询都是原子的;

· 支持表级锁,即每次操作是对整个表加锁;

· 存储表的总行数;

· 一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件;

· 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

InnoDb:

· 支持 ACID 的事务,支持事务的四种 隔离级别

· 支持行级锁及外键约束:因此可以支持写并发;

不存储总行数:

一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制;

主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持 B+树结构,文件的大调整。

4、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?

SQL 标准定义的四个隔离级别为:

  • 1. read uncommited :读到未提交数据
  • 2. read committed:脏读,不可重复读
  • 3. repeatable read:可重读
  • 4. serializable :串行事物

5、CHAR 和 VARCHAR 的区别?

  • 1. CHAR 和 VARCHAR 类型在存储和检索方面有所不同
  • 2. CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255 当 CHAR值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。

由于篇幅有限,这里就不一一列出所有的答案了,下面还要为大家展示一下MySQL的学习笔记及书籍,这份 数据库历年高频真题梳理 已整理成Word文档,有需要的小伙伴可以 私信“数据库”免费领取~~

数据库历年高频真题梳理

02 数据库学习笔记及书籍

(1)MySQL学习高频知识点

  • 1、事务四大特性(ACID)原子性、一致性、隔离性、持久性?
  • 2、事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?
  • 3、MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?
  • 4、MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景?
  • 5、查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序?
  • 6、什么是临时表,临时表什么时候删除?
  • 7、MySQL B+Tree索引和Hash索引的区别?
  • 8、sql查询语句确定创建哪种类型的索引?如何优化查询?
  • 9、聚集索引和非聚集索引区别?
  • 10、有哪些锁( 乐观锁 悲观锁),select 时怎么加排它锁?
  • 11、非关系型数据库和关系型数据库区别,优势比较?
  • 12、数据库三范式,根据某个场景设计数据表?
  • 13、数据库的读写分离、主从复制,主从复制分析的 7 个问题?
  • 14、使用explain优化sql和索引?
  • 15、MySQL慢查询怎么解决?
  • 16、什么是 内连接、外连接、交叉连接、笛卡尔积等?
  • 17、mysql都有什么锁,死锁判定原理和具体场景,死锁怎么解决?
  • 18、varchar和char的使用场景?
  • 19、mysql 高并发环境解决方案?
  • 20、数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)?
  • 1、事务四大特性(ACID)原子性、一致性、隔离性、持久性?

    原子性(Atomicity)

    · 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚 ,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

    一致性(Consistency)

    · 事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没收到

    隔离性(Isolation)

    · 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离

    同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

    关于事务的隔离性数据库提供了多种隔离级别,稍后会介绍到 。   持久性(Durability)

    · 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

    2、事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?

    从理论上来说, 事务应该彼此完全隔离, 以避免并发事务所导致的问题,然而, 那样会对性能产生极大的影响, 因为事务必须按顺序运行, 在实际开发中, 为了提升性能, 事务会以较低的隔离级别运行, 事务的隔离级别可以通过隔离事务属性指定

    2.1事务的并发问题

    (1) 脏读 :事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

    (2) 不可重复读 :事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。

    (3) 幻读 :幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。

    例如:事务T1对一个表中所有的行的某个 数据项 做了从“1”修改为“2”的操作 这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。 而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有跟没有修改一样,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

    小结 :不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。   

    2.2事务的隔离级别

    • 读未提交:另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据脏读
    • 不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。
    • 可重复读:在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同样的SELECT操作读到的结果会是一致的。但是,会有幻读现象
    • 串行化:最高的隔离级别,在这个隔离级别下,不会产生任何异常。并发的事务,就像事务是在一个个按照顺序执行一样

    2.3 MySQL默认的事务隔离级别为repeatable-read

    · MySQL 支持 4 中事务隔离级别 .

    · 事务的隔离级别要得到底层数据库引擎的支持, 而不是应用程序或者框架的支持.

    · Oracle 支持的 2 种事务隔离级别:READ_COMMITED , SERIALIZABLE

    2.3补充

    1. SQL规范所规定的标准,不同的数据库具体的实现可能会有些差异

    2. MySQL中默认事务隔离级别是“可重复读”时并不会锁住读取到的行

    · 事务隔离级别 未提交读时 ,写数据只会锁住相应的行。

    · 事务隔离级别为 可重复读时 ,写数据会锁住整张表。

    · 事务隔离级别为 串行化时 ,读写数据都会锁住整张表。

    隔离级别越高 越能保证数据的完整性和一致性 ,但是对并发性能的影响也越大,鱼和熊掌不可兼得啊。 对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed,它能够避免脏读取,而且具有较好的并发性能 。尽管它会导致不可重复读、幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。

    MySQL学习高频知识点

    (2)MySQL学习路线图( xmind

    MySQL学习路线图

    (3)MySQL学习书籍:MySQL+技术内幕:InnoDB存储引擎-3.pdf

    MySQL学习书籍:MySQL+技术内幕:InnoDB存储引擎-3.pdf

    03 数据库性能优化

    (1)MySQ性能优化21个最佳实践

    • 1、为查询缓存优化你的查询
    • 2、EXPLAIN你的SELECT查询
    • 3、当只要一行数据时使用LIMIT 1
    • 4、为搜索字段建索引
    • 5、在Join表的时候使用相当类型的例,并将其索引
    • 6、千万不要 ORDER BY RAND()
    • 7、避免 SELECT *
    • 8、永远为每张表设置一个 ID
    • 9、使用 ENUM 而不是 VARCHAR
    • 10、从 PROCEDURE ANALYSE() 取得建议
    • 11、尽可能的使用 NOT NULL
    • 12、Prepared Statements
    • 13、无缓冲的查询
    • 14、把 IP 地址存成 UNSIGNED INT
    • 15、固定长度的表会更快
    • 16、垂直分割
    • 17、拆分大的 DELETE 或 INSERT 语句
    • 18、越小的列会越快
    • 19、选择正确的存储引擎
    • 20、使用一个对象关系映射器(Object Relational Mapper)
    • 21、小心“永久链接”

    MySQ性能优化21个最佳实践

    (2)MySQL优化问题学习路线图(xmind)

    MySQL优化问题学习路线图(xmind)

    最后的最后:读者彩蛋

    今天关于备战春招之MySQL就分享这么多,如果你对文中提到的各种数据库学习资料感兴趣, 可以转发+后台私信“数据库”,按照回复操作即可免费领取这些数据库学习资料 ,让我们一起备战春招吧!

    性能优化问题汇总

    最后说到性能优化问题,前些日子还总结了一波MySQL+Tomcat+JVM的性能优化问题汇总,这里也一起分享出来给大家学习参考一下下, 同样私信“数据库”即可免费获取!!

    收藏
    分享
    海报
    0 条评论
    142
    上一篇:用最好的语言PHP解决编程挑战 下一篇:牵引力教育 你的PHP真的学好了?

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码