MySQL面试相关(2)

本文介绍了表分区的概念、与分表的区别,以及其在存储、查询效率和维护方面的优势。此外,讲解了MVCC多版本并发控制机制,并发事务的问题和解决方案,以及如何通过行级锁、索引优化和MySQL配置来提升性能。还涵盖了主从复制的过程和外连接的区别,以及优化DISTINCT操作的方法。
摘要由CSDN通过智能技术生成

1,什么是表分区?

表分区是根据一定规则,将一张数据表分解成多个更小的,容易管理的部分,从逻辑上只有一张表,但物理层面上由多个分区组成

2,表分区与分表区别?

分表:通过一定规则,将一张表分成多张不同的表

区别在于:分区逻辑上只有一张表,而分表是一张表分成多张表

3,表分区有什么好处?

(1)储存更多数据,分区表可以分布在不同物理设备上,从而高效的利用多个物理设备

(2)优化查询,在where语句中包含分区条件时,可以只扫描一个或者多个分区表来提高查询效率。用sum和count语句时,也可以在多个分区上并行处理,最后汇总结果

(3)分区表更容易维护,像批量删除大量数据可以清除整个分区

(4)避免某些特殊瓶颈,如innodb的单个索引互斥访问

4,简单介绍下MVCC

MVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库引擎中常见处理读写冲突的手段,以解决并发场景下的读写冲突。主要依托undolog

5,介绍一下并发事务存在哪些问题?

(1)更新丢失:多个事务选择了同一行更新,最后的更新覆盖了之前的更新

(2)脏读:一个事务正在对一条数据正在修改还未提交,这时第二个事务来读同一条数据,读到了未提交的脏数据

(3)不可重复读:一个事务在读取某些数据时已经发生了改变,或者某些记录已经被删除了

(4)幻读:一个事务按照相同的条件查询以前读取过的数据,却发现其他事务插入了满足其查询条件的新数据

6,在MVCC中,读操作可以分为哪几类?

(1)快照读,读取的是记录的可见版本(可能是历史版本),不用加锁

(2)当前读:读取的是记录的当前版本,并且当前读返回的记录都会加锁,保证其他并发事务不会再修改这条记录。

7,MVCC的好处是什么?

读不加锁,读写不冲突,在读多写少的应用中,可以大大地增加了并发性能

8,行级锁的优缺点是什么?

优点:(1)当许多线程中访问不同行时只存在少量锁冲突

(2)回滚时只有少量更改(3)可以长时间锁定单一行

缺点:(1)比页锁和表锁占用更多内存(2)在表的大多数使用中,速度更慢,因为你必须获得更多锁(3)若你经常使用GROUP BY或者必须扫描整表,比其他锁慢很多

9,如何做Mysql优化?

(1)开启查询缓存,优化查询

(2)explain你的select语句,可以分析查询性能瓶颈在哪

(3)当只要一行数据时设定limit 1,MySQL会在找到一条数据时停止搜索,而不是继续往后查询下一条符合条件的记录

(4)为搜索字段建立索引

(5)使用enum而不是varchar(只有一个字段,如 性别,国家,民族等字段)

(6)preparedStatement,可以提高速度并且防止SQL注入攻击

(7)垂直分表

(8)选择合适查询引擎

10,主从复制过程是什么?

(1)主机上的binlog线程,记录下了所有改变数据库的语句,放入主机的binlog中

(2)从机的io线程在执行start slave后,负责在master上拉取binlog内容,放入自己的relay log中

(3)从机SQL执行线程执行relaylog内的语句

11,解释下外连接,自连接,和内连接的区别

交叉连接:又名笛卡尔积,不使用任何条件,直接将一个表中所有内容和另一个表的记录一一匹配

内连接:只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的不会出现在结果集中,只连接匹配的行

外连接:其结果不仅包含符合条件的行,还会包含左表(左外连接),右表(右外连接)或两个表(全外连接,MYSQL目前不支持)的所有数据行

12,MySQL如何优化DISTINCT?

distinct在所有列上转化为GROUP BY,并与ORDER BY子句结合使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nathaniel333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值