当前位置:应用开发->数据库 ->数据库之 索引模块与事务模块学习笔记

原创版权标志数据库之 索引模块与事务模块学习笔记

作者:阿郎  发表时间:2018/5/3 9:21:48  阅读:
[摘要] 零零散散的笔记,记录着数据库的索引模块和事务模块的知识点。
使用支付宝扫码领红包,余额宝付款才可以使用红包哦!不要忘记哈。每天扫一次,天天赚红包!!可以将二维码保存到手机,每天直接扫码领红包啦!!
索引:
在未创建索引之前,数据库里的数据是按照堆来存储的,当我们使用index关键字创建索引时,其在内存中将会变为B树来存储。默认创建的索引类型是非聚焦索引,当使用关键字clustered创建聚焦索引。一个表只能有一个聚焦索引,可以有多个非聚焦索引。
聚集索引决定了表数据的物理存储顺序,也就是说表的物理存储是根据聚集索引结构进行顺序存储的,因此一个表只能有一个聚集索引。
除了聚集索引以外的其他索引,都称之为非聚集索引,非聚集索引一般都是为了优化特定的查询效率而创建的。


索引和主键的区别:1:主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引.2:数据表中只允许有一个主键,但是可以有多个索引.3.使用主键,数据库会自动创建主键索引,也可以在非主键上创建索引,方便查询效率.
唯一索引是指在该列中不能存储重复的值。

索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。索引很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。


事务
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上个节点。事务的四个属性:ACID。即原子性,一致性,隔离性和持久性。 
脏读: update table set X = X + 10 where col = A;
 update table set X = X - 10 where col = B;
假设此时执行完了第一个sql语句,此时数据库里面做了更新。用户可以看到效果,但是由于某种原因,第二个sql语句执行失败了,事务回滚此时用户就会看到原来的效果,这就是脏读。
事务隔离级别中的READ COMMITED可以解决脏读现象(使用的是共享锁),根据其名就可以看得出:提交完读
事务还有其余的三种隔离级别,在这里就不说了。


锁的粒度有哪些?
数据库锁:锁定整个数据库,这通常发生在整个数据库模式改变的时候。
表锁:锁定整个表,这包含了与该表相关联的所有数据相关的对象,包括实际的数据行(每一行)以及与该表相关联的所有索引中的键。
区段锁:锁定整个区段,因为一个区段由8页组成,所以区段锁定是指锁定控制了区段、控制了该区段内8个数据或索引页以及这8页中的所有数据行。
页锁:锁定该页中的所有数据或索引键。
行或行标识符:虽然从技术上将,锁是放在行标识符上的,但是本质上,它锁定了整个数据行。
微信扫码关注公众号CPP技术网,微信号cpp_coder,关注我们的公众号,阅读更多精彩内容!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)