十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
MS SQL Server:分区表、分区索引 详解
目前成都创新互联公司已为上千的企业提供了网站建设、域名、雅安服务器托管、网站托管维护、企业网站设计、安州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1. 分区表简介
使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。
大型表:数据量巨大的表。
访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式。
分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。
注意:只能在 SQL Server Enterprise Edition 中创建分区函数。只有 SQL Server Enterprise Edition 支持分区。
Sub 按钮1_Click()
Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表
'Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用
'Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表
‘工具 ---〉引用 ---〉Microsoft ActiveX data objects ....
'下面两句就不需要增加引用ADO
Set cn = CreateObject("Adodb.Connection")
Set rs = CreateObject("Adodb.Recordset")
Dim strCn As String, strSQL As String '字符串变量
Dim strCond As String
strCn = "Provider=sqloledb;Server=R9HDET7;Database=dbname;Uid=username;Pwd=password" '定义数据库链接字符串
'下面的语句将读取数据表数据,并将它保存到excel工作表中:工作表为一张两维表,记录集也是一张两维表
strSQL = "select CUSTOMER_NAME from VSC_BI_CUSTOMER " '定义SQL查询命令字符串
cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn
rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
i = 2
Set sht = ThisWorkbook.Worksheets("Test") '把sht指向当前工作簿的Test工作表
Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作
sht.Cells(i, 1) = rs("CUSTOMER_NAME") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
rs.MoveNext '把指针移向下一条记录
i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行
Loop '循环
rs.Close '关闭记录集,至此,程序将把某数据表的字段1保存在excel工作表sheet1的第1列,行数等于数据表的记录数
cn.Close '关闭数据库链接,释放资源
End Sub
至于对数据库的读写操作分离,还是前台代码来确定。
对于只负责读的数据库可以对该访问用户设置为datareader角色即可,也可以防止数据写了,不过这是数据库方面权限的问题
sql server 的高可用部分 说的就是这种类似的需求 。但是在实际使用中,要考虑性能问题,lz设定的前提是读写在物理上分离。
这种在一定程度上就需要承担部分数据的不一致(秒级差异也是差异),实际使用中碰到的 ,基本都可以有一定时间的差异(可以理解为很多标准量具中的公差),使用上是没有什么问题的。
sql server 2008数据库分离操作跟sql server 2005是一样的,以下具体介绍如何分离sql server 数据库:
1、打开 sql server 控制台(SQL Server Management Studio),然后登录。
2、登录时如果知道sa密码可以使用“SQL Server身份验证”模式登录,如果不知道sa密码可以使用“windows身份验证”模式登录就不需要密码登录。而sql server 2008的用户一般是在安装的时候自定义的用户,但也可以使用“windows身份验证”模式登录。
3、登录到控制到中之后,找到【数据库】点击展开,然后找到你所需要分离的数据库名称。选中数据库【右键】-【任务】-【分离】即可。
附件说明:分离数据库一般是需要将数据库拷贝到其他机器或者是移动磁盘时和不需要使用该数据库的情况下才做数据库分离。数据库一旦分离之后所对应的软件将无法正常使用和打开数据库。如果需要重新将数据库还原到数据库控制台中,选中【数据库】-【右键】-【附加】,找到你所要附件的数据所在的磁盘路径,选择以“.MDF”为后缀的文件即可。
如果有时间字段,建议做分区表,按时间分区,这样表从物理上是分开的,但是对外还是一张表.
好处有1.原本的代码结构不用变2.查询历史数据的时候,速度仍然有保障3.如果建立触发器进行自动分区,理论上不管再用多少年,都不会再需要重新建表a2了