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位。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值