Mysql面试题(二)

本文概述了MySQL中的锁类型(共享锁、写锁和粒度划分),解释了事务的ACID特性,以及如何设计高并发系统。讨论了InnoDB和MyISAM引擎的区别,以及如何通过事务隔离、索引和缓存等手段提高系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、锁的类型有哪些呢

mysql锁分为共享锁和排他锁,也叫做读锁和写锁。 读锁是共享的,可以通过lock in share mode实现,这时候只能读不能写。

写锁是排他的,它会阻塞其他的写锁和读锁。从颗粒度来区分,可以分为表锁和行锁两种。

表锁会锁定整张表并且阻塞其他用户对该表的所有读写操作,比如alter修改表结构的时候会锁表。

行锁又可以分为乐观锁和悲观锁,悲观锁可以通过for update实现,乐观锁则通过版本号实现。

二、MySQL底层实现,MySQL有什么引擎

MySQL底层采用B+树实现,B+树可以看作2-3树的一种扩展,B+树是每个节点允许存在多个元素,并且每个节点有多个孩子的多叉查找树,B+树的非叶子节点存储的是导航信息,不包含实际的值,而叶子节点存储了实际的值,所有的叶子节点和相邻的节点采用链表连接,便于区间查找和遍历。关于叶子节点存储的值,在InnoDB中非主键索引中,存储的是主键的信息,而聚簇索引(主键索引)中存储的是实际数据。

而在MyISAM中叶子节点存储的是指向实际数据存储位置的指针。

MySQL在5.5版本采用的是MyISAM作为默认的数据库引擎,之后就被更优秀的InnoDB引擎替代。

三、什么是事务,事务特性

事务指的是满足ACID特性的一组操作。

Atomicity 原子性:事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。 Consistency 一致性:数据库在事务执行前后保持一致的状态。

Isolation 隔离性:一个事务所做的修改在最终提交之前,对其他事务是不可见的。

Durability 持久性:一旦事务提交,则其修改将会被永久保存到数据库中。

四、如何设计一个高并发的系统

数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引优化

使用缓存,尽量减少数据库IO

分布式数据库、分布式缓存

服务器的负载均衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值