Sql Server来龙去脉系列之二 框架和配置
本节主要讲维持数据的元数据,以及数据库框架结构、内存管理、系统配置等。这些技术点在我们使用数据库时很少接触到,但如果要深入学习Sql Server这一章节也是不得不看。本人能力有限不能把所有核心的知识点理解透,所以有些描述的也不是很清楚。但当接下来的几个章节学习后再复习这些知识点应该能更容易理解。
数据库对象
数据库维持了一系列表存储所有对象、数据类型/约束/配置项/资源等,在2008种我们叫他们为system base tables,并且这些表我们默认是看不到的。我们可以通过管理员登陆数据库,然后执行脚本:
目录视图
什么是目录视图,目录视图作为常规接口用来维持系统的原数据。所有的目录视图命名都是以sys开始。例如,sys.objects;

系统函数
系统函数也叫做属性函数,属性函数从数据库对象提供给我们某些属性的值。在sql server 2008中包括以下系统函数:


数据库引擎组件
首先给大家看一张图看看数据库引擎包括哪些组件。
数据库协议
数据库通过协议层提供编程接口API,并且数据传递格式采用微软自定义的表数据流包(tabular data stream (TDS) packet),客户端也是通过TDS包和数据库交互数据。数据库包含的协议有:
查询优化器(Query Optmizer)
查询优化器从内存、CPU、I/O操作数来优化处理查询语句,检查数据表的影响次数、查找表索引和关联列等。
存储引擎(Storage engin)
存储引擎主要由访问方法、锁以及事物服务、工具命令三部分组成。
(1)访问方法: 当数据库定位数据时需要使用“访问方法”。随后访问方法预览数据页和索引页,把查询的数据返回给查询处理器。相似的,访问方法也接收从客户端传来的数据,打开表然后更新数据。
v82n46wh.png)
SQLOS(SQL 操作系统)
SQLOS运行于数据库引擎最底层,计划和内存管理是SQLOS最重要的两个功能。其他功能包括:
Sql Server 2008的NUMA框架
NUMA(non Uniform Memory Access Architecture)叫做非统一内存访问框架。 NUMA框架好处是可量化,遵循对称性架构(SMP),所有的内存访问都通过同一个内存栈,如果CPU比较少时这么模式工作还好。但如果多CPU都集中访问共一个系统栈就非常影响性能。NUMA限制了一个内存栈的CPU数量,每组进程有自己的内存和I/O通道。每一个组叫做NUMA节点,节点之间通过一条高速部内连接器交互,每一个节点的CPU数量依赖于具体的硬件设备。NUMA框架结构图如下:
内存管理
默认情况下,Sql Server 2008几乎是完全动态的管理内存资源。当分配内存时数据库差不多一直保持和SQLOS交互。所以说SQLOS是数据库非常重要的底层组件。
缓冲池和数据缓存
数据库主要的内存组件是缓存池(Buffer Pool)。缓存池中的所有内存被用作缓存从磁盘上读取的页数据。缓存管理器管理磁盘操作,把数据和索引页保存到数据缓存,以至于数据能够被用户共享。当其他组件需要内存时要从缓存池中申请。一个缓存在数据库中也是按照页形式存储,和数据以及索引页有相同的尺寸。你可以理解为一个缓存区是处理数据库中页的一个框架。很多的缓存区减少其他内存组件的缓存池然后转变成各种内存缓存。例如缓存存储过程和执行计划的缓存我们经常称为计划缓存。
访问内存数据页
访问数据缓存中的页的速度必须非常快,数据缓存中的页我们通过hash方式快速访问。hash表包含了一组指针数据映射到真实的缓冲页上。如果所有的指针映射不能存放到一张hash页上,则这些指针被串联到一个hash页中。hash的主键一般是一个dbid-fi leno-pageno identifier(数据库ID、文件Number、页面Number的组合体),hash表维持了一个索引和特殊页的关联关系。通过hash方法,即使存在大量的内存数据,数据库也能快速从内存中找到特殊的数据页。同理,仅仅少量内存读取就可以决定期望的页面是否存在缓存中,是否需要从磁盘中读取。
管理数据缓存中的页
你能使用一张数据页或者索引页如果它存在内存中。因此,数据缓存中必须存在一个缓冲区用来读取页。保持有效缓存的即时供应是重要的性能优化。如果一个缓存区不能有效读取,许多内存页不得不查找一个缓存区清空用来作为工作区。
Sql Server 2008配置
配置网络协议
SELECT net_transport FROM sys.dm_exec_connections WHERE session_id = @@SPID;
返回结果:。因为我们在同一台电脑上访问,直接通过共享内存协议速度最快。如果通过不同的电脑访问,改协议就不支持。Sql Server 2008开发、评估、Express版本默认是没有开启TCP/IP协议。下图展示了2008各个版本的默认协议设置
Sql Server浏览器(Sql Server Brower)
Sql Server 配置设置
Sql Server来龙去脉系列目录结构:
Sql Server来龙去脉系列之五 日志以及恢复
Sql Server来龙去脉系列之六 表
Sql Server来龙去脉系列之七 索引
Sql Server来龙去脉系列之八 比较特殊的存储
Sql Server来龙去脉系列之九 查询优化
Sql Server来龙去脉系列之十 计划缓存
Sql Server来龙去脉系列之十一 事务和并发
Sql Server来龙去脉系列之二 框架和配置的更多相关文章
- Sql Server来龙去脉系列之四 数据库和文件
在讨论数据库之前我们先要明白一个问题:什么是数据库? 数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多 ...
- Sql Server来龙去脉系列之三 查询过程跟踪
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...
- Sql Server来龙去脉系列之一 目录篇
从工作一直到现在都没怎么花功夫深入学习下Sql Server数据库,在使用Sql Server时90%的时间基本上都是在接触T-SQL,所以数据库这块基本上属于菜鸟级别.至于数据库的底层框架以及运行机 ...
- Sql Server来龙去脉系列 必须知道的权限控制基础篇
题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内 ...
- Sql Server来龙去脉系列 必须知道的权限控制核心篇
最近写了<Sql Server来龙去脉系列 必须知道的权限控制基础篇>,感觉反响比较大.这可能也说明了很多程序猿对数据库权限控制方面比较感兴趣,或者某些技术点了解的没有很透彻. 有些人看 ...
- SQL Server 学习系列之六
SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...
- SQL Server 学习系列之五
SQL Server 学习系列之五 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...
- SQL Server 学习系列之四(SQL 内幕)
SQL Server 学习系列之四(SQL 内幕) SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL ...
- sql server 备份与恢复系列四 大容量模式下的备份与还原
一. 概述 在sql server 备份与恢复系列的第一篇里,有讲到大容量模式下备份与还原的相关知识.这篇重点来演示在大容量模式下常用的备份与还原模式“完整备份+差异备份+日志备份”. 在大容量恢复模 ...
随机推荐
- SVO实时全局光照:Sparse Voxel Octree based Global Illumination (SVO GI)
功能已实现,初步集成进来,暂未进行重度优化.但GI的效果已很明显.这里特地给出了开启实时GI前后的效果对比,比对场景如下:1.只有直接光照(方向光源)的场景.2在直接光照(方向光源)基础上开启了实时G ...
- Codeforces Beta Round #17 A - Noldbach problem 暴力
A - Noldbach problem 题面链接 http://codeforces.com/contest/17/problem/A 题面 Nick is interested in prime ...
- .NET 4.6中的性能改进
.NET 4.6中带来了一些与性能改进相关的CLR特性,这些特性中有一部分将会自动生效,而另外一些特性,例如SIMD与异步本地存储(Async Local Storage)则需要对编写应用的方式进行某 ...
- Python从内存中使用编译后的模块
在Windows编程的时候,有些时候,我们经常会要使用一些非常规的方法,比如说从内存中加载DLL,然后使用DLL中的函数.于是就思索在用Python的时候是否能够将几个编译好的Pyc合并成一个,然后使 ...
- 为YAESU FT-817ND 增加频谱功能
> ft817可谓是QRP神机啊,可能是一开始就接触SDR的缘故,没有频谱显示,总觉得很难受,好在经典的817从不缺乏魔改.终于找到一个解决方案: http://item.taobao.com/ ...
- juniper 550M訪问自身公网IP回流内部IP
拓扑图示意: 网关设备juniper 550M, untrust 区: 公网地址段22.22.22.22/29 trust区: 内部员工PC地址:172.16.4.x /24 trust区: ...
- ubuntu-16.10-desktop-amd64.iso 版本 安装 oracle 11gR2 11.2.0.1 database
特点: 需要重新安装:libaio1_0.3.109-2ubuntu?_amd64.deb.默认的libaio库有问题,和其默认libaio的编译方式有关! 需要重新安装gcc 4.x,默认的gcc ...
- Could not find the Visual SourceSafe Internet Web Service connection information for the specified database Would you like to launch the Visual sourceSafe connection wizard?
今天同事遇到个奇怪问题,以前也遇到过,不过重新绑定一下就OK了,不知道为什么今天不行了. 错误提示:===============================================Cou ...
- Asus ubuntu Fn恢复
sudo sed 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/GRUB_CMDLINE_LINUX_DEFAULT="qui ...
- Asp.net Request方法获取客户端的信息
Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...