一些数据库面试信息的收集

数据库

1.事务

1.事务四大特性

原子性,要么执行,要么不执行
隔离性,所有操作全部执行完以前其它会话不能看到过程
一致性,事务前后,数据总额一致
持久性,一旦事务提交,对数据的改变就是永久的

2.事务并发
事务的隔离级别?

隔离级别脏读不可重复读幻读
读未提交
读已提交×
可重复读××
串行化×××

3.脏读、不可重复读、幻读?

脏读不可重复读幻读
A事务执行过程中,B事务读取了A事务的修改。但是由于某些原因,A事务可能没有完成提交(读未提交),发生RollBack了操作,则B事务所读取的数据就会是不正确的B事务读取了两次数据,在这两次的读取过程中A事务修改了数据(读已提交),B事务的这两次读取出来的数据不一样。B事务这种读取的结果,即为不可重复读事务读取了两次数据,在这两次的读取过程中A事务添加了数据,B事务的这两次读取出来的数据不一样

2.锁

数据库系统程序员角度级别角度
X/排他/互斥锁、S/共享/读锁、U/更新锁一种是悲观锁,一种乐观锁行(级)锁,表(级)锁,间隙锁
X/排他/互斥锁S/读/共享锁更新锁
如果一个事务对对象加了排他锁,其他事务就不能再给它加任何锁了用于所有的只读数据操作。共享锁是非独占的,允许多个并发事务读取其锁定的资源。1. 首先获得一个共享锁,读取数据,2. 然后将共享锁升级为排他锁,再执行修改操作。

读写锁
是一种 读共享,写独占的锁(共享锁+互斥锁)。可理解为一本小说有多个作家和读者,只能一个作家在写,允许一个作家和多个读者使用。
当读写锁被加了写锁时,其他线程对该锁加读锁或者写锁都会阻塞。
当读写锁被加了读锁时,其他线程对该锁加写锁会阻塞,加读锁会成功。
悲观锁
顾名思义,很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人拿这个数据就会block(阻塞),直到它拿走锁。利用事务的机制,适用临界区有IO操作,代码复杂,竞争激烈的情况。
乐观锁
没有用到锁,修改时认为自己可以拿到资源,修改资源的状态。是使用CAS来进行同步,要修改资源时进行一个compare再swap的操作。是应用层实现的机制,适用于并发写入少,大多是读操作的情况。
行(级)锁
某一行数据有多个修改的,后修改的需要等先修改的提交后再执行。
表(级)锁
一个原因:索引失效(例如,条件语句使用or连接),由行级锁升级为表锁。
sql语句实现

MyISAM和InnoDB引擎的区别

MyISAMInnoDB
data存的是数据地址,索引放在XX.MYI文件中,数据放在XX.MYD文件中,所以也叫非聚集索引data存的是数据本身,数据和索引存在一个XX.IDB文件中,所以也叫聚集索引
非事务安全事务安全
表级,全文类型索引行级锁 ,不支持全文索引
效率高效率低
select操作ACID事务支持

b树与B+树的区别

B树B+树
每个节点都存储key和data ,叶子节点指针为null中间节点只存索引 ,可以存储更多的数据,更加的矮胖io次数更少 查询性能稳定,范围查询等值简单,等值

3.索引

索引是帮助MySQL高效获取数据的数据结构,
能加快数据库的查询速度。
1.索引的优势和劣势

优势:
可以提高数据检索的效率,降低数据库的IO成本,类似于书的目录。
通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。
劣势:
索引会占据磁盘空间
索引虽然会提高查询效率,但是会降低更新表的效率。
2.索引分类
普通索引:
MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值。
唯一索引:
索引列中的值必须是唯一的,但是允许为空值。
全文索引:
只能在文本类型CHAR,VARCHAR,TEXT类型字段上创建全文索引。字段长度比较大时,如果创建普通索引,在进行like模糊查询时效率比较低,这时可以创建全文索引。 MyISAM和InnoDB中都可以使用全文索引。
空间索引:
MySQL在5.7之后的版本支持了空间索引,而且支持OpenGIS几何数据模型。MySQL在空间索引这方面遵循OpenGIS几何数据模型规则。
前缀索引:
在文本类型如CHAR,VARCHAR,TEXT类列上创建索引时,可以指定索引列的长度,但是数值类型不能指定。

mysql所有知识点:一文搞懂mysql索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值