- 博客(0)
- 资源 (14)
- 收藏
- 关注
有关SQL_Server_2008你一定要知道的八件事
部署环境:
整个部署过程在虚拟环境下完成。
涉及到三台虚拟机:
计算机R2DCIscsi:角色DC,DNS,安装有Windows Server 2008 R2,域名HBYCRSJ.COM,IP地址192.168.1.13
节点计算机两台:R2Node01和R2Node02,安装有Windows Server 2008 R2,已加入到域。两块网卡IP地址分别192.168.1.14,10.10.10.14和192.168.1.15,10.10.10.15。 10.10.10.14的网卡负责心跳网络。如下图
2013-11-12
SQL Server系统调优解决方案
索引简介
索引是根据数据库表中一个或多个列的值进行排序的结构。索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。 数据库使用索引的方式与使用书的目录很相似,通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。
索引键:用于创建索引的列。
索引类型
聚集索引:
聚集索引基于数据行的键值在表内排序和存储这些数据行。由于数据行按基于聚集索引键的排序次序存储,因此聚集索引对查找行很有效。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。数据行本身构成聚集索引的最低级别(叶子节点)。只有当表包含聚集索引时,表内的数据行才按排序次序存储。如果表没有聚集索引,则其数据行按堆集方式存储。聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如:如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。
非聚集索引
非聚集索引具有完全独立于数据行的结构。非聚集索引的最低行包含非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。数据行不按基于非聚集键的次序存储。如果一个表只有非聚集索引,它的数据行将按无序的堆集方式存储,非聚集索引可以建多个。
唯一索引
唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下,该索引可以确保索引列中每个值组合都是唯一的。唯一索引既是索引也是约束。
复合索引
索引项是多个的就叫组合索引,也叫复合索引。复合索引使用时需要注意索引项的次序。
索引对性能的作用
使用索引的优点
1. 通过唯一性索引(unique)可确保数据的唯一性
2. 加快数据的检索速度
3. 加快表之间的连接
4. 减少分组和排序的时间
使用索引的原则
1. 在需要经常搜索的列上创建索引
2. 经常用于连接的列上创建索引
3. 经常需要根据范围进行搜索的列上创建索引
4. 经常需要排序的列上创建索引
5. 经常用于where子句的列上创建索引
不使用索引的原则
1. 查询很少使用和参考的列不建索引
2. 对只有少数值的列不建索引
3. 定义为text、image、bit的列不建索引
4. 当需要update性能远远高于select性能时不建或少建索引
常用命令
1. sp_helpindex : 报告表或视图上的索引信息
2. dbcc showcontig :显示指定表的数据和索引的碎片信息
3. dbcc dbreindex :重建指定数据库中一个或多个索引
4. dbcc indexdefrag :整理指定表或视图的聚集索引或辅助索引的碎片
创建索引
1. 定义索引时,可以指定每列的数据是按升序还是降序存储。如果不指定,则默认为升序
2. 为索引指定填充因子,可标识填充因子来指定每个索引页的填满程度。索引页上的空余空间量很重要,因为当索引页填满时,系统必须花时间拆分它以便为新行腾出空间。
优化索引
1. 重建索引(dbcc dbreindex)
2. 索引优化向导
3. 整理指定的表或视图的聚集索引和辅助索引碎片(dbcc indexefrag)
2013-11-12
SQL Server数据库查询速度慢原因及优化方法
【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化
●可以通过以下方法来优化查询 :
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。
2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)
3、升级硬件
4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段。
5、提高网速。
6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。
配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的1.5倍。如果另外安装了全文检索功能,并打算运行Microsoft搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的3倍。将SQL Server max server memory服务器配置选项配置为物理内存的1.5倍(虚拟内存大小设置的一半)。
7、增加服务器CPU个数;但是必须 明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MsSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询 的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作UPDATE,INSERT, DELETE还不能并行处理。
8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。 like ''a%'' 使用索引 like ''%a'' 不使用索引用 like ''%a%'' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。
9、DB Server 和APPLication Server 分离;OLTP和OLAP分离
10、分布式分区视图可用于实现数据库服务器联合体。
联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件''分区视图'')
a、在实现分区视图之前,必须先水平分区表
b、 在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上 运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。
在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:
1、 查询语句的词法、语法检查
2、 将语句提交给DBMS的查询优化器
3、 优化器做代数优化和存取路径的优化
4、 由预编译模块生成查询规划
5、 然后在合适的时间提交给系统处理执行
6、 最后将执行结果返回给用户。
其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。
2013-11-12
SQL Server 2008 R2数据库镜像部署
角色切换
自动切换:在使用见证服务器的情况下,数据库必须已经同步,并且见证服务器必须和镜像服务器连接正常。
手动切换:在高安全性模式下,主体服务器和镜像服务器必须保持互联,并且数据库必须已经同步。
强制服务:在高性能模式和不带自动故障转移功能的高安全性模式下,如果主体服务器出现故障而镜像服务器可用,则可以强制服务运行。这种方式可能导致某些数据库丢失。
实现
一、条件
SQL08R2的“数据库镜像”必须基于每个使用完整恢复模式的数据库来实现。对于SQL08R2不支持简单恢复模式和大容量日志恢复模式的数据库镜像。另外,不能镜像“master”、“msdb”、“model”和“tempdb”等系统数据库。
二、环境
测试环境为一个LAN内,IP地址是192.168.0.0/24段,域名是punwar.cn。
DC:192.168.0.110/24——域控制器和DNS服务器;
SQL-1:192.168.0.111/24——SQL08R2主体服务器;
SQL-1:192.168.0.112/24——SQL08R2镜像服务器;
SQL-1:192.168.0.113/24——SQL08R2见证服务器。
拓扑(如图3)所示:
图3
三、基本环境的准备
由于系统平台使用WIN08R2,而且启用了防火墙设置,因此为了SQL08R2能够正常工作,需要在防火墙上打开相应的端口。本文中介绍数据库镜 像需要打开的端口是TCP-1433和TCP-5022端口。打开方式非常多,但是此处可以结合基于域的组策略为三台SQL08R2服务器同时进行整体配 置。
将三台服务器放置在同一个OU中(如图4)
2013-11-12
SQL_Server_2008_R2_CPU_和_内存_最大优化_分配
微软SQL Server 2008 R2中的资源分配方式与SQL Server 2005中的方式相比是一种完全不同的过程。利用资源控制器,在SQL Server 2008 R2中解决方案供应商有切实可用的方法管理CPU和内存。
资源消耗是长期以来困扰使用SQL Server的解决方案供应商的基本问题之一。任何服务器,不管它是物理的还是虚拟的,供处置的CPU和内存池都是有限的。过去,这一简单的事实给SQL Server带来许多麻烦,因为它通常是资源非常敏感的应用。
如果服务器上只托管了唯一一个数据库的话,那么SQL Server资源消耗并不是个严重的问题。但是如果有多个数据库在用着,那就真的变成一个问题了,因为各种数据库都会竞争同样一组CPU和内存资源。
在SQL Server 2005中,对这个问题可以接受的解决方案通常是为每个数据库创建独立的SQL Server实例,利用处理器亲和度为每个数据库实例分配资源。这种技术的问题是一旦资源被分配给SQL Server实例,他们对其他SQL Server实例就不可用了。结果,如果一个数据库的负载特别重,它也不可能从其他SQL实例暂借服务器的CPU资源,虽然这个实例上的资源此时可能什么都没做。
一些解决方案供应商也曾尝试利用服务器虚拟化作为给个别SQL Server数据库分配资源的一种途径。在这种模型中,每台虚拟机只托管一个SQL Server数据库。这种方法也可行,但是虚拟机和他们的操作系统也消耗了一些本该用于SQL Server的服务器资源。此外,还依赖于你使用的虚拟化软件,以按需分配为基础的资源动态分配可能有些困难或者不可能实现。
微软最终针对SQL Server 2008 R2中的资源分配问题创建了一套可行的解决方案,引入了叫做资源控制器的新组件。这个资源控制器是可以通过微软SQL Server Management Studio访问的,它可以定义资源池,每个资源池都包含负载工作组,如下图所示:
2013-11-12
struts2零配置个人整理文档
1 Convention插件
1.1 设置结果页面路径
默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。如:
Xml代码
<constant name="struts.convention.result.path" value="/WEB-INF/page" />
则将路径配置到了WEB-INF/page 下。
1.2 设置Convention搜索包
默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。你可以通过设置struts.convention.package.locators属性来修改这个配置。如:
<constant name="struts.convention.package.locators" value="web,action" />
则定义了在项目中,包路径包含web和action的将被视为Action存在的路径来进行搜索。
2011-10-09
HTML_js_正则表达式
1.文本框只能输入数字代码(小数点也不能输入)
2.只能输入数字,能输小数点.
3.数字和小数点方法二
4.只能输入字母和汉字
5.只能输入英文字母和数字,不能输入中文
6.只能输入数字和英文chun
7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
<input onKeyPress="if((event.keyCode57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">
2011-10-09
[Effective.Enterprise.Java.中文版].Effective.Enterprise.Java.Chinese.eBook
[Effective.Enterprise.Java.中文版].Effective.Enterprise.Java.Chinese.eBook
2011-10-09
Java文件夹复制(远程复制(网络传输),用于远程备份文件)
Java文件夹复制(远程复制(网络传输),用于远程备份文件)(支持文件夹,嵌套子文件夹)
import java.io.*;
import java.util.*;
public class FileSelection {
private File rootDirectory;//根目录
private File[] fileList;//文件目录下面的文件列表(包括目录,用于多次判断)
private ArrayList fileArrayList; // 用于存储文件(只是文件)列表
//初始化参数
public FileSelection() {
fileArrayList=new ArrayList();
rootDirectory = new File("Test");
rootDirectory.mkdir();
}
//获得文件(不包括目录)的列表
public void initFileArrayList() {
if (rootDirectory.isDirectory()) {
//遍历目录下面的文件和子目录
fileList = rootDirectory.listFiles();
for (int i = 0; i < fileList.length; i++) {
//如果是文件,添加到文件列表中
if(fileList[i].isFile()){
fileArrayList.add(fileList[i]);
}
//否则递归遍历子目录
else if (fileList[i].isDirectory()) {
fileList[i].mkdir();
rootDirectory=fileList[i];
initFileArrayList();
}
}
}
}
//将文件信息添加到列表中
public void addFiles(File f){
fileArrayList.add(f);
}
//访问器返回文件列表
public ArrayList getFileArrayList() {
return fileArrayList;
}
}
--------------------
BackupClient.java
package com.xinxin.Client;
import java.io.*;
import java.net.*;
/**
*
* @author Administrator
*@version 1.0
*BackupClient类实现文件的传输到服务器
*/
public class BackupClient implements Runnable{
private int port;//服务器端口
private InetAddress ipAddress;//服务器IP地址
private Socket clientSocket;//客户端套接字
private InputStream inputStream;//网络输入流
private OutputStream outputStream;//网络输出流
private File file;
//构造函数(获得服务器端IP地址和监听端口号)
public BackupClient(InetAddress ipAddress,int port,File file){
this.ipAddress=ipAddress;
this.port=port;
2011-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人