课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
服务器开发是大多数后端开发程序员都需要重点掌握的编程技术,而今天我们就通过案例分析来了解一下,MySQL开发常见基础知识。
1.Mysql中有哪几种锁?
(1)表级锁:开销小,加锁快。不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发度低。
(2)行级锁:开销大,加锁慢。会出现死锁,锁定粒度小,发生锁冲突的概率低,并发度高。
(3)页面锁:开销时间、加锁时间、锁定粒度在表级锁与行级锁之间,会出现死锁,并发度中等。
2.CHAR与VARCHAR的区别?
(1)CHAR长度不可变,范围1~255。若存储长度未达到定义的长度,则以空格填充。存取速度快,但容易浪费空间。
(2)VARCHAR长度可变,范围1~65535。若存储长度未达到定义的长度,则存实际长度数据。存取速度稍慢,但节约空间。
3.能说下myisam和innodb的区别吗?
myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。
innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。
4.你能说下事务的基本特性和隔离级别吗?
事务:数据库中,对数据的一系列操作可以看成一个整体,称为事务。这个整体要么全部执行、要么全部不执行。
ACID属性的存在确保了事务的可靠。
(1)Actomicity(原子性):原子性要求事务中的操作要么全部完成,要么回退成之前未操作的状态。即事务中某个操作失败后,会相当于什么都没发生,不会出现改了部分数据的情况。
(2)Consistency(一致性):一致性要求事务执行前后,数据库的状态一致,即从一个一致性状态切换到另一个一致性的状态。
(3)Isolation(隔离性):隔离性要求并发的事务相互隔离、不可见。即一个事务看不见另一个事务内部的操作以及操作的数据。
(4)Durability(持久性):持久性要求事务对数据库数据的修改是永久的。即数据一旦修改提交后,其状态将永久不变。
5.并发问题–脏读、不可重复读、幻读?
对于同时运行的多个事务,若这些事务访问同一数据时,没有采用必要的隔离机制,则会造成如下的并发问题。
(1)脏读:脏读指的是当一个事务正在访问某数据,并对这个数据进行的修改,且这条数据还未提交到数据库中,此时若另一个事务也访问到这条数据,获取到的是这条被修改的数据,此时得到的数据不对,即脏读。比如:tom年龄为22,事务A修改tom年龄为30,此时还未提交到数据库,此时事务B获取tom年龄,得到的是30,事务A回滚数据,数据库的数据依旧是22,但事务B拿到的数据是30,这就是脏读,读错了数据。
(2)不可重复读:指一个事务,多次读取同一条数据,在这个事务还未结束时,另一个事务也访问该数据并对其修改,那么可能造成事务多次读取的数据不一致,即不可重复读。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。