随笔分类 -  SQLSERVER基础

摘要:SQLSERVER的数据页面结构在论坛里经常有人问到SQLSERVER是怎麽存放基础表数据的,既然不想查MSDN,本人就在这里说一下吧基础表数据都存放在数据页里面,SQLSERVER存储数据都是按照“页”为单位来存放在磁盘的,SQLSERVER从磁盘读写数据也是按照 “页” 为单位 一页一页地读取到内存,所以有时候如果数据不能塞满整个数据页,那么这种情况就叫做:page split 页拆分 或者 “碎片”(详细的在文章结尾会跟大家解释一下因为要先了解SQLSERVR的数据页面结构才能解释清楚),SQLSERVER有时候需要读取两页才能把用户需要找的数据读出来,如果表加了索引的话可以通过重建索引 阅读全文
posted @ 2012-12-09 22:08 桦仔 阅读(3964) 评论(4) 推荐(2) 编辑
摘要:SQLSERVER连接池内部机制前言介绍:当应用程序运行的时候,会有一个连接池的管理控件运行在应用程序的进程里,统一管理应用程序和SQLSERVER建立的所有连接,并且维护这些连接一直处于活动状态。当有用户发出一个connection open指令时连接池会在自己维护的连接池中找一个处于空闲状态的连接放回自己管理的连接池里,给这个用户使用。当用户使用完毕后,发出connection close指令,连接池会把这个连接放回自己管理的连接池里,让他重新处于空闲状态,而不是真的从SQL里登出。这样如果下次有用户需要相同连接,就可以重用这个连接,而无须再去做物理连接了。就是说连接池是放在客户端的,是客 阅读全文
posted @ 2012-12-01 19:23 桦仔 阅读(7317) 评论(8) 推荐(4) 编辑
摘要:SQLSERVER中的sp_reset_connection存储过程的作用经常有人在论坛提问为什麽在使用SQL Trace的时候会看到大量的sp_reset_connection存储过程的执行究竟sp_reset_connection存储过程有什么用?网上的资料很少下面说一下这个存储过程是干嘛的在介绍之前先说一下连接池和事务和阻塞,因为这个存储过程跟连接池、事务和阻塞有关一般SQL应用都会使用连接池来得到良好的性能。如果有一个连接忘记把事务关闭就退出连接那么这个连接会被交还给连接池但是这时候,事务不会被清理。客户端驱动程序会在这个连接下一次被重用的时候(又有新的用户要建立连接)发一句sp_re 阅读全文
posted @ 2012-11-28 22:29 桦仔 阅读(5171) 评论(0) 推荐(2) 编辑
摘要:SQLSERVER中的锁资源类型RID KEY PAG EXT TAB DB FIL 在检测死锁的时候,会用到sp_lock这个存储过程,里面有一列:type 即锁的资源类型 通俗来讲就是SQLSERVER可以在哪些资源上加锁 可以加锁的资源有RID KEY PAG EXT TAB DB FIL , 阅读全文
posted @ 2012-11-26 22:54 桦仔 阅读(2452) 评论(0) 推荐(0) 编辑
摘要:今晚看了一下msdb库里面的表,存储的信息归纳如下--数据库历史还原和备份信息--事务日志传送的信息--损坏的页面的信息--维护计划的信息--数据导入导出工具的信息DTS--数据库作业的信息--数据库邮件的信息--数据库代理的信息 阅读全文
posted @ 2012-11-10 23:15 桦仔 阅读(2641) 评论(0) 推荐(0) 编辑
摘要:SQLSERVER压缩数据文件的用处有多大前奏:前些天因为客户那边的问题(其实是盗版问题),只能使用免费的SQLSERVER EXPRESS版本SQLSERVER2005 的express版本的SQLSERVER的整个数据库的数据文件大小限制为4GB(SQLSERVER2012express版本限制... 阅读全文
posted @ 2012-11-09 17:01 桦仔 阅读(3717) 评论(0) 推荐(0) 编辑
摘要:SQLSERVER独特的任务调度算法"SQLOS"微软开发SQLOS的背景:SQLSERVER作为一个企业级数据库平台,一个基本的要求就是要有能力顺畅地同时处理成百上千的用户请求,SQLSERVER要使线程调度得更加适应高并发的数据库应用。由于以上背景:SQLSERVER在Windows的基础上开发... 阅读全文
posted @ 2012-10-17 23:40 桦仔 阅读(3558) 评论(1) 推荐(1) 编辑
摘要:SQLSERVER的表格存储组织结构msdn网址:表组织和索引组织堆结构聚集索引结构非聚集索引结构SQLSERVER的表格存储组织结构可以用下面一张图来解释平时我们说的SQLSERVER表分区技术,默认一个表的所有数据存放在一个分区,如果使用表分区,那么DBA可以决定要建多少个分区,规划表的数据存放到哪一个分区。当然,创建了分区还不能实现减轻I/O负载,还要创建几个文件组,创建多少个由DBA决定,DBA还要决定把哪些分区放在哪个文件组,最后决定把哪些文件组放在哪些磁盘,要把文件组放在不同的磁盘才能真正实现减轻I/O负载。当客户端访问某一部分数据的时候,如果数据放在A分区,A分区在A文件组,A文 阅读全文
posted @ 2012-09-20 19:33 桦仔 阅读(3895) 评论(0) 推荐(1) 编辑
摘要:SQLSERVER数据库主要状态和切换路径一个SQLSERVER数据库会处于很多种状态,例如 ONLINE、RESTORING、RECOVERING、RECOVERY_PENDING、SUSPECT、EMERGENCY、OFFLINE等等。只有在ONLINE的状态下,数据库才能被正常访问。下图主要反映了数据库的主要状态之间的切换路径下面说一下这些状态:RECOVERING:SQLSERVER正做数据库修改的时候,是先写日志,然后再修改内存中的数据页。至于硬盘上的数据页内容,将在检查点或者是SQLSERVER做LAZY WRITE的时候完成。所以在大部分时间,都会有一些硬盘上的数据不是最新的版本 阅读全文
posted @ 2012-09-15 23:16 桦仔 阅读(6834) 评论(5) 推荐(2) 编辑