MySQL详解(一)

1.关系数据库和非关系数据库?

关系数据库基于表格方式存储,可以通过SQL语句进行查询内容,支持事务ACID特性,优点:保持数据一致性、支持复杂查询、数据开销消耗小,缺点:处理非结构化数据能力弱

非关系数据库基于键值对方式存储,支持多种数据模型,优点:读写效率高(key-value),缺点:查询能力弱(无SQL语句),一致性差

在现代中,通常将两者结合使用,发挥各自优势

2.索引

索引是表中一种特殊数据结构,通常是每一行唯一性标志,作用:可以加快检索速度,方便排序,便于表快速连接,缺点:增大存储空间消耗,插入、删除等操作都需要维护索引,降低读写效率

3.一条SQL语句执行过程

客户端发送一条请求时,连接器进行身份验证,接下来在缓冲中查找,如果找到结果就返回,否则将SQL语句放入分析器中进行字词分析,再在优化器中进行优化,最后调用执行器在搜索引擎中查找相应的内容返回

补充:

MySQL结构组成:

由服务层(连接器、分析器、优化器、执行器,查询缓冲组成)和 存储引擎(储存数据和提取数据)组成

4.drop/truncate/delete区别

drop:将整个表删除,在事务中是无法回滚的

truncate:将表中数据全部删除,索引、自增id等恢复初始化,无法回滚

delete:删除表中具体某行时使用,在事务中会被以日志方式记录,因此可以回滚

总而言之:想删除表结构用drop,删除表内容保留表结构用truncate,只删除表内容用delete

5.MySQL优化方向

查询使用select时,减少select * 的使用

选择合适的搜素引擎

创建索引

6.数据库隔离级别

出现在数据库并发控制情况下

分为以下四种:
未提交读:事务发生修改,未提交其他人使用事务时也能看到修改后的结果,因此会出现脏读、不可重复读以及幻读情况

提交读:事务发生修改,在提交前其他人调用事务都是不可见的,阻止了脏读情况,但是还有不可重复读和幻读情况

可重复读:一个事务多次多次读取结果相同,阻止脏读和不可重复读,还存在幻读情况

可串行化读:并发读取和串行化读取一样,可以阻止脏读、不可重复读以及幻读情况

补充:

脏读:事务A读取了事务B修改但未提交的数据,如果事务B回滚,事务A读取的就是无效数据

不可重复读:事务A多次读取同一数据,期间事务B修改并提交了该数据,导致事务A前后读取结果不一致

幻读:事务A多次按相同条件查询,期间事务B插入或删除了符合该条件的记录并提交,导致事务A看到"幻影行"

(图片取自阿秀)

7.数据引擎InnoDB与MyISAM对比

InnoDB是事务型储存引擎,也是MySQL默认的数据引擎,其支持四个隔离特性:未提交读、提交读、可重复读和可串行化读,默认是可重复读,通过MVCC+间隙锁来解决幻读问题,存在聚簇索引,提高查询效率,支持在线热备份,其他引擎不支持该特性,原因是因为要获取一致性需要停止对所有表的写入,而在混合使用场景中,停止写入也意味着停止读取

MyISAM提供许多特性:压缩表、空间数据索引等,不支持事务,不支持行级锁,只支持表级锁,读取加共享锁,写入加排他锁

8.幻读与不可重复读区别

不可重复读原因是数据的修改,例如:A在读取自己工资时为1000元,在其读取过程中,B将其工资改为1500元,当A再次读取发现工资变了,这就是不可重复读

幻读原因通常是数据删除或插入,例如:A在读取班上人数是为50人,在其读取过程中,B进入该班,A再次读取发现人数为51人,这就是幻读

最后,感谢你的支持!!!

相关推荐
#六脉神剑1 分钟前
myBuilder新版本(8月,Office文件预览、Oracle数据库支持)
数据库·oracle·开发平台·数字化工具·mybuilder
花青泽4 分钟前
5-数据库-SQL注入-联合查询-AND/OR绕过-day13
数据库·sql
踏着七彩祥云的小丑24 分钟前
忘记Redis是否安装过时查看
数据库·redis·缓存
Nontee1 小时前
设计模式:模板方法与策略,从“每个字都认识“到能说清它们在干嘛
java·数据库·设计模式
眞bilibili2 小时前
带团队后的日常思考(十七)
数据库
laboratory agent开发2 小时前
智能体多工具串联执行中途失败,部分写入的数据如何回滚
运维·服务器·数据库
xqqxqxxq3 小时前
DML 表数据:插入、删除、修改
笔记·mysql
段一凡-华北理工大学3 小时前
AI推动工业智能化转型~系列文章07:分类与诊断算法体系:故障识别的完整工具箱
数据库·人工智能·算法·机器学习·分类·数据挖掘·高炉炼铁智能化
DBA_G3 小时前
南大通用GBase HD数据平台讲解
数据库
foolishlee3 小时前
Neon wal日志处理流程
数据库