sql培训。
sql server 2008 管理与优化。
1. 基本技能。
服务器选项、数据库文件、灾难恢复(备份,还原)
2. 提高。
安全性。数据传输:a、导入,导出 b、dts 分析
自动化管理任务。
ssis 作业警报操作员。
3. 附加。
高可用性:集权磁盘。
复杂: 数据同步
监事性能: 动态管理视图。
4. 设计(优化)
索引非结构化数据的出来 filestream
主题一:安装与配置。
选择:各版本支持的功能,所管理的物理资源(cpu数量,内存数量,单一用户数据库的容量,分析数据的级别)。
企业版是64位。
企业版是一个应用广泛的数据平台,运行关键oltp业务,数据仓库(data warehousing)和商业智能(business intelligence)应用;其提供了企业级别的伸缩性、高可用性和安全性以适用上述应用的高需求。
企业版应用场景:
需要高可用性和实时性要求的关键业务;
已有的大型oltp数据服务部署;
在可预计的将来oltp业务将有极大的增长;
大型的报表服务和分析服务部署;
数据仓库的应用;
服务器的合并。
安装。a、 隔离服务—默认推荐使用域账户进行管理。
没有域账户,使用system账户或network service
b、 账户的权限级别为最小原则。
针对大对象数据的存储管理原则:
a、2:8原则:在所有blob类型的记录中,有》80%的记录容量是》1m的(推荐2m)。使用文件系统进行存储管理。
b、处理大对象不建议用files tream 进行处理。
windows 身份验证 ip ,端口用逗号隔开。
导入版本控制工具,有效的管理多人协同管理。
sql cmd dac(专用管理连接)
注意:使用dac建议通过sql smd 的命令行方式进行登录,如果是远程进行登录,需要开启dac的远程功能。在--。
通常可以通过系统存储过程sp---who和sp---lock以了解数据库引擎的的当前活动与锁的情况。
服务器选项。
内存。a、 针对32位系统,awe扩展物理内存2gb上限。
b、 针对同一物理机器中,安装有两个或以上sql实例的场景,并且各实例优先级别不同时,通过设置最小或最大服务器内存,以有效管理与分配内存资源,以确保实例运行。
c、 每次查询时,占用的最小内存数 512k—2gb 默认1024k
如果sql服务器是以读为主。如分析或报表服务,可以设置比较大的数值。
升级。in---place 本机直接升级。
side---by---side 平行迁移。
升级完以后一定要测试, 数据数量大的用分离与附加(平行迁移)
监视内存使用量。
监视内存不足的情况,请使用下列对象计数器:
memory: **ailable bytes
memory: pages/sec
**ailable bytes 计数器指示当前有多少内存(以字节为单位)可供进程使用。 pages/sec 计数器指示由于页错误而从磁盘取回的页数,或由于页错误而写入磁盘以释放工作集空间的页数。
**ailable bytes 计数器的值低表示计算机总内存不足或应用程序没有释放内存。 pages/sec 计数器的比率高表示分页过多。 监视 memory:
page faults/sec 计数器以确保磁盘活动不是由分页导致。
分页率偏低(以及由此产生的页错误)是正常的,即使计算机有大量的可用内存。 若要确定分页过多是由 sql server 还是由其他进程导致,请监视用于 sql server 进程实例的 process: page faults/sec。
主题2 数据库与数据文件。
核心:多文件储存。
优势:充分利用cpu多磁盘(陈列),以提升i/o性能。
多文件储存的设置优先级。
1. tempdb 中的操作室最小日志记录操作。 解决 i/o 存储在不同物理磁盘上。
2. 适度增加用户数据库的日子文件数量。
3. 适度增加用户数据库的数据文件(铺助数据文件。ndf)
文件的初始大小:以一年信息量为标准,申请一个连续空间以进行构建。
文件上限以三年为标准,自助增量大小:自动增量需要明确的数据(文件上限10%)取整。
一般不建议大于2gb
文件存放位置。
日志文件初始大小,以备份的频率以及数据更新的频率。
主文件(结构文件): mdf 有且仅有一个。
辅助文件: .ndf 只用于储存数据,文件组的概念来管理。
事务日志文件: .ldf 操作的各类行为。
架构 1、 解决命名冲突。
2、 增加了安全访问的力度。
主题3 灾难恢复。
衡量标准:数据、时间。
离线恢复**系统数据库数据库快照恢复误操
a. 恢复。
恢复模式:完整恢复模式大容量日志恢复模式简单恢复模式。
选择恢复模式时,应该权衡以下因素:
数据库性能。
数据丢失的容忍程度。
事务日志存储空间需求。
备份好恢复的易操作性。
用户可以使用alter dabase语句来修改数据库的恢复模式,其语法格式如下:
alter database database_name
setrecovery
使用transact-sql的alter dabase语句,将practice_jwgl数据库的恢复模式设置为bulk_logged模式。
b. 备份。
备份类型:完整备份事务日志备份结尾日志备份差异备份文件备份部分备份仅复制备份。
备份策略:完全数据库备份策略、数据库和事务日志备份车略、差异备份策略、文件或文件组备份策略。
完整备件(周期以天或周为单位)+差异或日志备份(以小时或天为单位)+特殊情况—当数据文件有错,但日志文件没有问题时,执行尾日志备件。
针对大型数据库,一般是容量大于500gb
建议实施数据库分离进行数据的备份,只要拷贝数据文件就可以。
日志文件过大:
1. 没有进行日志文件备份。
2. 索引维护作业的影响。
3. 长时间事务的影响。
4. 页面分割的影响。
备份压缩:提升i/o性能。
a. 数据库完整性的检查 dbcc checkdb
b. 实施数据库完整备份引入 checksum
c. 实施数据库扎伊或日志备份引入 checksum
d. 注意备份集的有效设置,建议,或者覆盖原有备份集。
e. 备份启用压缩策略。
f. 还原之前进行备份集完整性检查。
restore verifyonly from disk=’c:\’
go 灾难时备份尾日志。
在数据库数据文件因各种原因发生损坏时,如果日志文件没有损坏。可以通过备份结尾日志(tail of log)使得数据库可以恢复到灾难发生时的状态。
方式一、sql server实例运行正常时,结尾日志的备份。
-创建数据库。
create database testbackup
go-创建一个测试表。
use testbackup
gocreate table test(col1 nvarchar(100))
go-做一次完整备份。
backup database testbackup to disk='c:\databack\' with checksum;
go-插入一条记录。
insert into test values('完整备份后插入的测试记录');
go-做一次日志备份。
backup log testbackup to disk='c:\databack\testbackup_' with checksum;
go-插入一条测试记录。
insert into test values('日志备份后的测试数据');
现在数据库testbackup有了一个完整备份和一个日志备份,而最后那条” 日志备份后的测试数据”是在上次日志备份之后的,被结尾日志所包含。
接下来模拟数据库文件所在磁盘损坏(日志文件完好)
1.停掉server sql服务。
2.删除数据库文件(mdf文件)
此时在ssms中访问数据库testbackup会出现不可用:
此时,因为sql server实例可用,通过在t-sql语句指定no_truncate选项(必须指定,否则无法备份尾端日志),备份尾端日志:
依次进行完整备份恢复,和两次事务日志恢复,可以看到数据已经成功恢复到灾难点:
use testbackup
goselect * from test
go当sql server实例崩溃时,结尾日志的备份。
此时由于各种原因,所处的sql server实例也崩溃,无法通过t-sql来备份结尾日志。此时数据库文件损坏,而事务日志文件保持正确。
假设情况和上面例子一样,此时我手里有一个完整备份(testbackup_和一个日志备份(testbackup_还有一个日志文件(ldf)。
这时我将这几个文件拷贝到其他拥有sql server实例的机器上。
SQL学习笔记
目录。1 数据库创建 1 2 创建表 1 3 表结构查询 2 4 在表中增加列 3 5 修改列的约束属性 3 6 使用insert into 语句添加数据 3 7 使用 select into 添加相关的数据到一个新表中 4 8 间接修改列为非空值的办法 4 9 更为完善的create table ...
SQL学习笔记
where子句。比较运算符 范围说明 between a and b,not between a and b.可选值列表 in not in 一般用于嵌套查询。模式匹配 like not like 是否空值 is null is not null 上述条件的逻辑组合 and or not 内容大小写...
SQL学习笔记
增加记录。在使用sql数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用sql语句来实现,该语句具体如下 添加一条记录。insert into tablename col1,col2,col3 values 1,2,3 添加多条记录。insert into tablename ...