作业7.12

**

B+树的存储过程

**:
一个m阶的B+树具有如下几个特征:
1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
2.所有的叶子结点中包含了全部元素的信息,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

** 更形象的表示:**
只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针。
在这里插入图片描述
后来,在B+树上增加了顺序访问指针,也就是每个叶子节点增加一个指向相邻叶子节点的指针,这样一棵树成了数据库系统实现索引的首选数据结构。

原因有很多,最主要的是这棵树矮胖。一般来说,索引很大,往往以索引文件的形式存储的磁盘上,索引查找时产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的时间复杂度。树高度越小,I/O次数越少。

那为什么是B+树而不是B树呢,因为它内节点不存储data,这样一个节点就可以存储更多的key。

触发器存储过程:

触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器创建语法四要素:
1.监视地点(table)
2.监视事件(insert/update/delete)
3.触发时间(after/before)
4.触发事件(insert/update/delete)

存储过程:
MySQL 5.0 版本开始支持存储过程。

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

优点
存储过程可封装,并隐藏复杂的商业逻辑。
存储过程可以回传值,并可以接受参数。
存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看 表,数据表或用户定义函数不同。
存储过程可以用在数据检验,强制实行商业逻辑等。

substr和substring的区别

substr和substring两个都是截取字符串的。
两者有和向点,如果只是写~个参数,两者的作甩都是一样的:就是截取字符吏当前下标以后真到字符患最后的字符患片段s例如:
var a=“abcdefghiklmnopqrstuvwxyz”;
var b=a.substr(3);
var c=a.substring(3);
console.log(b);
console.log©;
这样输出的结果就是一样的,都是
defghiklmnopqrstuvwxyz从第三个下标是2的位置截取到最后
当写第二个参数的时候,两者就会有完全不同的含义;
substr (a,b)
第二个参数是截取字符串的长度substring (a,b)
第二个参数是截取字符串最终的下标例如:
var a=“abcdefghiklmnopqrstuvwxyz”;
var b=a.substr(3,5);
var c=a.substring(3,5);
打印输出的结果是:defgh
de
注意最后5下标是不会取到的意思是只能截取a字符串的3,4下标截取的时候是不会截取到最后一个[3,5)

truncate和delete的区别

truncate
删除表中的内容,不删除表结构,释放空间;
delete
删除内容,不删除表结构,但不释放空间
区别
truncate删除数据后重新写数据会从1开始,而delete删除数据后只会从删除前的最后一行续写;内存空间上,truncate省空间,因为,truncate是直接从1开始,即全部清空开始,而delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快;

delete属于DML语句,而truncate和drop都属于DDL语句,这造成了它们在事务中的不同现象:

delete在事务中,因为属于DML语句,所以可以进行回滚和提交操作(由操作者)
truncate和drop则属于DDL语句,在事务中,执行后会自动commit,所以不可以回滚;

n叉树20n不可人为修改。正常16KB。让k越小,容纳的n越大。page目前是不是可以修改?
1, 通过改变 key 值来调整
N 叉树中非叶子节点存放的是索引信息,索引包含 Key 和 Point 指针。Point 指针固定为 6 个字节,假如 Key 为 10 个字节,那么单个索引就是 16 个字节。如果 B + 树中页大小为 16 K,那么一个页就可以存储 1024 个索引,此时 N 就等于 1024。我们通过改变 Key 的大小,就可以改变 N 的值。
2, 改变页的大小
页越大,一页存放的索引就越多,N 就越大。
数据页调整后,如果数据页太小层数会太深,数据页太大,加载到内存的时间和单个数据页查询时间会提高,需要达到平衡才行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值