mysql数据库原理分析_数据库原理与mysql

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.数据库高并发

水平拆分

垂直拆分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值