我是靠谱客的博主 动听导师,最近开发中收集的这篇文章主要介绍MySQL数据库内部讨论笔记 引擎数据存储结构语句,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


引擎

MySQL支持第三方插件式储存引擎,默认使用的是InnmDB引擎。

该引擎下每张表最多支持6个触发器,其中insert、updata、delete在before、after状态下各有一个。


事务

一系列语句中任意一句出现错误,该系列语句全部添加失败(已成功的语句进行回滚)。

经过事后查找,了解了事务的基础特性,即ACID特性:

原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,事务的个元素是不可分的,事务是一个完整操作。

一致性(Consistemcy):事物完成时,数据必须是一致的,也就是说,和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。

隔离性(Isolation):对数据进行修改的多个事务是彼此隔离的。这表明事务必须是独立的,不应该以任何方式以来于或影响其他事务。

持久性(Durability):事务完成之后,它对于系统的影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库

Check语句

MySQL中存储引擎未实现check功能,但不报错。一般使用触发器代替该功能。

数据库信息网站:http://ourmysql.com



数据存储结构

磁盘每个数据块=512Kb,mysql中每个节点=16Kb

 

为何使用B/B+树:

百万级数据: BST树 每节点 2分支,需要最多20次查找(20次io读取)

                   B树 每节点 100+分支,需要最多4层查找(4次io读取)

B树里每个节点中的所有数据会以AVL树(自适应的二叉查找树)进行存储,若该节点查找的频率大于其他节点时,会使用哈希表进行自适应以提高效率。


【B/B+树的区别】其中:

        B树所有节点都进行关键字存储

        B+树只有在叶子节点存储关键字,其他节点作为索引。

【我想另起一片新的文章来整理自己脑中关于B/B+树的内容】



语句

子查询(优化相关):就是把一个查询结果作为另一个查询的数据源

相关子查询:该子查询所查找的表与外查询所查找的表有相关。

select Sname
from Student_1
 where Sname not in
(
   select Sname from Student_2
 );

独立子查询:该子查询所查找的表与外查询所查找的表不相关。

select * from Student
where exists
(
select * from Class 
where cName='SoftWare' and Class.Id=Student.Id
);

其中独立子查询效率更高,在优化时应当优先使用。

链接

链接分为三种,

自然链接(默认使用):取表S∩C的内容

全链接:取表S∪C的内容

左/右链接:左链接取S的内容、右链接取C的内容

若某项不存在,则输出NULL。

无重复大数据排序

若有10亿个无重复数字排序,此时通常排序方法都过于复杂,使用哈希映射的方法进行排序:


使用除法+位运算‘与’确定某数字应在第x个char字节中的第y位。

(使用位运算‘与’代替直接取余,有数量级的效率提升)

例:数字10,10/8=1,10&7=2,所以10在第2字节的第2位。


最后

以上就是动听导师为你收集整理的MySQL数据库内部讨论笔记 引擎数据存储结构语句的全部内容,希望文章能够帮你解决MySQL数据库内部讨论笔记 引擎数据存储结构语句所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部