2021-03-18
1、MYSQL(开源的关系型数据库)
1.1存储引擎:古老的存在MyISAM,新崛起的霸主InooDB;
事务性和崩溃后的安全回滚:MyISAM不支持事务,InooDB支持事务回滚和事务崩溃修复
锁:MyISAM支持表级锁,InnoDB支持行级锁和表级锁
外键:MyISAM不支持外键,InnoDB支持外键
1.2 索引:mysql索引的数据结构是BTree索引和哈希索引。
索引的查询方式:主键索引就是根据主键的值,然后走索引查询。其他索引就是先取出对应数据主键的值,然后再走主键索引。
1.3 事务:事务就是逻辑上的一组操作,要么全部执行,要么全部不执行。
1.3.1 事务的四大特性:ACID
原子性(Atomicity):事务的操作要么全部执行,要么全部不执行
一致性(Consistency):执行事务后,数据库从一个正确的状态到另一个争取的状态
隔离性(Isolation):不同事物之间互不影响,并发事务之间数据库是独立的
持久性(Durability):事务被提交后,他对数据库中数据的改变是永久的
1.2.3 事物带来的问题:
脏读:一个事务对某一个数据进行更新,但还没有提交,另一个数据也会对同一条数据进行操作,但是这个时候读取到的数据就是脏数据
丢失修改:事务A\B同时读取了同一个数据,同时提交对数据的修改,必定会有一个提交被另一个覆盖。
不可重复读:一个事务第一个数据A读取操作,然后第二次对数据A读取操作,这中间的时间差时,有另一个事务对数据A更新,导致第一个事务两次读取到的数据A数据不一致
幻读:一个事务两次查询一批数据,在两次查询中间的时间差,另一个事务对这批数据进行了增加或者删除。导致第一个事务第二次查询的时候发现多了/少了一些数据
1.2.4 事务隔离级别:
READ_UNCOMMITTED(读取未提交):允许读取尚未提交的数据
READ_COMMITTED(读取已提交):允许读取并发事务已提交的数据
REPEATABLE_READ(可重复读):多次读取的同一数据结果一致
SERIALIZABLE(可串行化):所有事务依次执行
1.2.3 mysql常见问题:
①一条sql运行太慢怎么解决:从两个角度思考 --SQL语句之前都正常执行,突然变慢;读取的数据被锁了。数据库正在进行刷脏页的操作
--SQL语句一直很慢,那就是sql语句是否有用到索引,加了索引,可索引没生效