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人,这就是幻读

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

相关推荐
庆登登登20 分钟前
MySQL Workbench 鸿蒙 PC 适配全记录:从 GTK_X11 桌面程序到 ArkUI 原生数据库工作台
数据库·mysql·harmonyos
2601_9632827724 分钟前
政企无线对讲系统落地:从设备采购到长期运维的完整工程实践
大数据·运维·数据库
熊文豪24 分钟前
OceanBaseVS金仓:一条 SQL 的两条路——KingbaseES 的性能竞争力从哪来
数据库·sql·电科金仓
大模型码小白33 分钟前
数据可视化:AI 生成 HTML5 动态交互式数据图表
前端·数据库·人工智能·深度学习·机器学习·信息可视化·html5
风哥2号34 分钟前
数据库教程FGMT26‑1‑GoldenGate数据库容灾迁移01(OGG同构异构、数据库迁移、数据同步、容灾复制)
数据库·oracle
颜颜yan_1 小时前
Firebird 鸿蒙 PC 适配全记录:打通数据库内核、Qt 管理端与原生维护工具
数据库·qt·harmonyos
风哥2号1 小时前
数据库教程FGMT25‑Oracle多租户架构CDB与PDB运维管理
数据库·oracle
程序猿乐锅1 小时前
【黑马点评 | 第一篇】从 Session 到 Redis+Token 的改造与拦截器实现
数据库·redis·缓存
南京兴帝文化传媒有限公司1 小时前
基于地图平台的本地商户信息优化:药店夜间服务标注与客户转化实操
前端·javascript·数据库·人工智能·geo 优化·geo优化避坑·ai搜索获客
u0109053591 小时前
NAS远程访问内网穿透方案之使用神卓N600实现不限速方法
服务器·网络·数据库