数据库原理与mysql

1.数据库类别、关系型数据库和非关系型数据库的区别
https://blog.csdn.net/qq_27565769/article/details/80731213
https://blog.csdn.net/qq_33472765/article/details/81515251

2.SQL语句

3.SQL内连接与外连接
相对于连接查询来说的,根据on连接的那个字段来划分,内连接是返回两个表中都存在的内容,外连接又分为左外连接和右外连接,左外连接是返回左表中含有的内容,涉及到右表字段的内容,若右表中不含有该id对应的字段,写上NULL;右外连接是以右表ID为基准,当左边字段中对应ID的值不存在,那么在最后的连接结果上补NULL。

4.索引类型和原理
B+树索引
哈希索引
全文索引
空间数据索引

5.SQL事务实现原理(ACID)
原子性:事务被视为不可分割的单元,事务所包含的操作要么全部执行成功,要么失败全部回滚
一致性:数据库在事务执行前后的状态要保持一致,即所有事务对同一个数据的读取结果是相同的
隔离性:一个事务所做的修改在最终提交之前对其他事务是不可见的
持久性:一旦事务被提交,那么事务结果将永远保留在数据库中,即使数据库崩溃,事务执行的结果也不能丢失
事务在并发情况下会出现并发一致性问题,使用*技术可以解决,mysql数据库提供了四个隔离标准帮助解决并发一致性问题。

6.数据存储引擎
innoDB
MyISAM

7.主从复制和读写分离
binlog线程:将主服务器中的操作都存在一个二进制日志文件中
I/O线程:读取二进制文件,并将其写入到从服务器的中继日志中
SQL线程:读取中继日志,并在从服务器中执行这些操作(重放)

做缓存,增加数据冗余保证可用性;
主服务器做写操作与实时性要求比较高的操作,从服务器做读操作,缓解锁争用,提高效率;
从服务器可以使用myisam引擎,提高系统查询性能,节约系统开销;

8.SQL日志系统redo log(重做日志),undo log(回滚日志),bin log(二进制日志)

9.MVCC多版本并发控制
让写操作去写最新的版本快照,读操作读旧的版本快照
事务的每一个修改操作都会为数据行增加一个版本快照
脏读和不可重复读本质上是读取了别的事务未提交的修改,而MVCC规定,事务只能读取已经提交的版本快照
版本号标志事务的版本
Undo日志,回滚指针连接数据行的版本快照
readView未提交事务列表,记录未提交的事务版本号,还包含minID,maxID,注意列表中的版本号虽然是按照顺序进行存储的,但是不是每一个都存在,会有某一个中间事务已经提交
进行查询时,比较事务id与minID和maxID之间的关系,并且查看事务id是否存在与readView列表中,进行快照的选取

10.SQL优化思路
explain分析:重点关注select操作的查询类型、使用的索引、扫描的行数
优化数据访问:减少请求的数据量;减少服务器端扫描的行数
重构查询方式:切分大查询;分解大连接查询

11.范式理论
https://blog.csdn.net/yyp0304Devin/article/details/81158133
关系型模型的核心:规范化,把数据库组织成保证存储数据完整性的同时最小化冗余数据的结构
第一范式:数组的每一个属性只能包含一个值;关系中的每一个数组必须包含相同数量的值;关系中的每一个数组一定不能相同
第二范式:在第一范式基础上,该数据表中任何一个非主键字段的值都依赖于主键字段
第三范式:在第二范式基础上,该数据表中任何两个非主键字段之间不存在依赖关系

12.数据库高并发
水平拆分
垂直拆分

数据库原理与mysql

上一篇:每周总结【2020/10/24】————Redis与Mongodb初学


下一篇:MYSQL基础常见常用语句200条