MySQL数据库的简单的面试题

1、MySQL有哪些锁机制

MySQL有以下几种机制:
行级锁:行极锁在mysql 中最常用的锁机制,它只针对表的某一行进行加锁不受影响。MySQL的行级锁分为共享锁和排他锁两种类型,共享锁和排它锁不能同时存在于一行。
表级锁:表级锁是对整张表进行加锁,可以在需要对表进行全局操作的时候使用MySQL中表级锁分为读锁和写锁两种类型,读锁和写锁不能同时存在于一张表
元数据锁:元数据锁是MySQL表中一种特殊的锁机制,它用于保护数据的一致性和完整性。元数据锁可以保证对数据库进行数据结构更改的时候其他用户无法对该表的进行访问,修改或操作
间隙锁:间隙锁是MySQL中一种特殊的锁机制,它用于在事务中保护索引的键值,间隙锁的作用 是保证索引值的唯一性和一致性。
记录锁:记录锁是MySQL的一种特殊的锁机制,它用于保护行锁定的行,防止事务对该行进行修改或者删除
自增锁:当使用自增列作为逐渐的时候MySQL会自动对这个自增行进行加锁,以保证每次插入数据的时候自增的唯一性
临时表锁:当使用临时表时MySQL会自动对这个自增列进行加锁,以保证临时表的唯一性

注意:
不同锁机制对性能的影响也是不同的,选择合适的锁机制可以提升数据库的性能和并发处理能力同时也需要根据具体业务场景和需求来选择合适的锁机制,避免锁竞争和死锁等问题

2、描述myism和innodb 的区别

Myism:采用表级锁对myism表度不会阻塞读,但是会阻塞同表的写,对于myism写则会阻塞读和写。即一个线程获得一个表的写锁后,只有持有线程可以对表更新操作,其他线程的读写都进行等待
索引和数据是放在一起的
innodb 采用行级锁,支持事务,例如只对a列索引,如果update … where a=1 and b=2 其实也会整个表,select使用共享锁,update insert delete 采用排他锁,commit 会把锁职消当然select by id for update 也可以定制排他
索引和数据是分开的

3、MySQL中有哪种存储方式

innodb(b+树):支持ACID事务的存储的引擎,提供行级锁和MVVC(对版本并发控制)等高级特性被广泛地应用在大型的web应用中
myism(b树):不支持 处理事务和行级锁但是因为其简单快速小巧,而被广泛使用默认的表锁机制为表级锁
memory(哈希表):将数据保存到内存中,因此读取数据速度非常快,但是存储的容量有限不支持ACID事务
**csv(紧凑型数据块)**支持csv数据文件,常用于从其他人软件或数据库中导入数据
Archive(逗号分割符来存储的):csv格式,类似于zip的压缩格式,常用于从其他软件或数据库中导入数据.

在初始版mysql默认中默认使用的myism存储引擎,因为他的性能比较优秀,可以快速的读取大量数据,但是他不支持事务处理和行级锁,所以在高并发应用中可能出现严重的安全性问题

在MySQL5.5版本之后的数据库可是默认使用数据innodb存储引擎吗,支持事务所和行级锁

个人整理的一小部分,如有错误请在评论区提出

你可能感兴趣的:(MySQL,数据库,mysql)