分享

SQL数据库如何读取数据

 太极混元天尊 2018-06-28

SQL事务的运作方式

(这里面没有关于涉及内存方面的读写细则,关于涉及到内存读写细则的会在下一篇单独介绍的哈)

一,事务开始

(1.1)所有DML语句必然基于事务的,如果没有式开事务(SQL SERVER 默认不开隐式事务,这点与Oracle正相反),则事务处理的最小单位每一条DML语句,即每条语句作事务,并自动提交事务;

(1.2)除手动开事务(BEGIN TRAN),或开隐式事务(SET IMPLICIT_TRANSACTIONS ON),才需要手动提交事务(COMMIT TRAN)SQL SERVER自动提交事务;

二,发起DML(有福要涉及各的控制语言与令,朋友们可以可选性的LOOK哈。)

(2.1)DML语句包括:INSERTDELETEUPDATE

(2.2)DDL语句最终被转化对系统表的DML,SQL SERVERDDL语句也可以被回滚(ORACLE不可以),比如:CREATE/ALTER/DROP/TRUNCATE,另外DCL语句也可以被回滚;

三,数据是否在内存

(3.1)内存数据使HASH算法,不多说;

(3.2)如果数据页不内存,则需要从磁盘上的数据文件,读取相应的数据页到内存,即物理读,以2.1的方式查数据页(哪怕没到),即辑读。

四,修改数据

(4.1)SQL SERVER内存的数据缓冲区中将数据页修改,此时数据页称脏页(DIRTY PAGE);

(4.2)SQL SERVER 内存的日志缓冲区中记录REDO LOG,姑且称脏日志;

五,事务结束

(5.1)提交(COMMIT),此时将当前事务的脏日志刷新到数据库的日志文件,并打上事务结束标记(COMMIT),脏页有可能暂被刷新到数据文件;

事务日志结构如下:

BEGIN TRAN

DML

COMMIT TRAN

(5.2)回滚(ROLLBACK),此时读REDO LOG(当包括辑操作、或数据前后像)得到反向DML操作,反向修改脏页,将DML+反向DML从日志缓冲刷新到数据库的日志文件,并打上事务结束标记(ROLLBACK),同样,脏页有可能暂被刷新到数据文件;

事务日志结构如下:

BEGIN TRAN

DML

反向DML

ROLLBACK TRAN

不难发现,SQL SERVER的日志容易成瓶颈(BOTTLENECK),因为在写的同时引入了读,即引入了竞争,而ORACLEUNDO SEGMENT很地避免了这问题,REDO LOG永远只是在被串行写。

六, 刷新数据页

(6.1)从步骤4可以看出数据库的预写日志(WAL)原则,因关系型数据库基于事务的,而日志正事务ACID性的保证,也数据恢复的保证;

(6.2)检查点(CHECKPOINT),检查点周期性地将脏页刷新到数据文件此之前,也先将脏日志刷新到日志文件,最终日志文件打上检查点标记(CHECKPOINT),至此上面事务修改的数据被正式写到磁盘上的数据文件


福利:(其实应该是备注更加恰当。哈。)

1数据查询语言DQL Q = Query

数据查询语言DQL于检索数据库

结构SELECT子句,FROM子句,WHERE子句组成的查询块:

SELECT 字段名表>

FROM 表或视图名>

WHERE 查询条件>

2数据操纵语言DML M = Manipulation

数据操纵语言DML于改变数据库数据

要有三种形式:

1) 插入:INSERT

2) 更新:UPDATE

3) 删除:DELETE

3 事务控制语言TCL C = Control

事务控制语言TCL于维护数据的一致性

三条语句:

1)COMMIT;

2)ROLLBACK;

3)SAVEPOINT;

4数据定义语言DDL D = Definition

数据定义语言DDL于建立,修改,删除数据库的各种对象-----表、视图、

索引、同义词、聚簇等如:

CREATE TABLE/VIEW/INDEX/SYN/CLUSTER

| | | | |

表 视图 索引 同义词 簇

5数据控制语言DCL(自动提交事务)

数据控制语言DCL来授予或回收访问数据库的某种特权,并控制

数据库操纵事务发生的时间及效果,对数据库实行监视等。

两条令:

1) GRANT:授权。

2)REVOKE:撤回。

PS:1) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。

回滚---ROLLBACK

回滚令使数据库状态回到上最后提交的状态。其

SQL>ROLLBACK;

2) COMMIT [WORK]:提交。

数据库的插入、删除和修改操作时,只有当事务提交到数据

库时才算完成。事务提交前,只有操作数据库的这人才能有权看

到所做的事情,人只有最后提交完成后才可以看到。

提交数据有三种型:式提交、隐式提交及自动提交。下面分说明这三种型。

(1) 式提交

COMMIT令直接完成的提交为显式提交。其

SQL>COMMIT

(2) 隐式提交

SQL令间接完成的提交隐式提交。这些

ALTERAUDITCOMMENTCONNECTCREATEDISCONNECTDROP

EXITGRANTNOAUDIT,QUIT,REVOKERENAME

(3) 自动提交

若把AUTOCOMMIT设置ON,则插入、修改、删除语句执行后,

系统将自动进行提交,这就自动提交。其

SQL>SET AUTOCOMMIT ON

结束语:好长好长的一片,可算写完了。马上过年了哈,祝福大家新的一年里快快乐乐,健健康康。送大家个大大的福字(小编就是扫这个福字得到的敬业福哈,祝愿大家人人都能集起5福,分2亿哈)。

SQL数据库如何读取数据



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多