概述
引擎
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数据库内部讨论笔记 引擎数据存储结构语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复