2013年5月18日
摘要: 这两天一直在研究SQL Server 2005 中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便. 最后找到了在已有表上做分区表的方法.见代码. 我们有个表现在已经到了1千万的数据,之前仅仅是优化索引和索引试图来在真实的环境中查看到底sql2005单表能负载多大的量。 最后得出结论,在我们公司现有的硬件条件下,sql2005中,单表的量最多不能超过250w数据。(这个数据会根据硬件的不同而会有所不同.)---select * from t200705--1.先根据表数据的量大小,来拆分每一个分区,保证每一个分区表的记录尽量在250w条记录左右.-. 阅读全文
posted @ 2013-05-18 15:05 davidkam 阅读(182) 评论(0) 推荐(0) 编辑
摘要: SQL Server数据库优化方案 查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 可以通过如下方法来优化查询: 1、把数据、日志、索引放到不同的I/O... 阅读全文
posted @ 2013-05-18 09:11 davidkam 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 适用于: SQL Server 2005 摘要:SQL Server 2005 中基于表的分区功能为简化分区表的创建和维护过程提供了灵活性和更好的性能。追溯从逻辑分区表和手动分区表的功能到最新分区功能的发展历程,探索为什么、何时以及如何使用 SQL Server 2005 设计、实现和维护分区表。(本文包含一些指向英文站点的链接。) 关于本文本文所描绘的功能和计划是下一版本 SQL Server 的开发方向。它们并非本产品的说明书,如有更改,恕不另行通知。对于最终产品是否具有这些功能不做任何明示或暗示的保证。对于某些功能,本文假设读者熟悉 SQL Serve... 阅读全文
posted @ 2013-05-18 09:05 davidkam 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 可以通过如下方法来优化查询: 1、把数据、日志、索引放到不同... 阅读全文
posted @ 2013-05-18 09:04 davidkam 阅读(414) 评论(0) 推荐(0) 编辑
摘要: Table: 实体表:不超过3个单词或者24个字符,例:user,group 关系表:表1_表2_relation,例:user_group_relation 当需要使用的表名为SQL保留关键字,可以使用tbl_表名的方式(全部),或者复数形式解决View: [******]_view,例:user_group_view表空间(Oracle): ts_[******],例:ts_user分区表(Oracle): tp_+分区描述,例:tp_system_items_0612约束: ckc_[表]_[字段] ckt_[表],例:ckc_user_id,ckt_user一般索引:idx_[*... 阅读全文
posted @ 2013-05-18 09:02 davidkam 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 很 多开发人员都想成为一名DBA,也有很多人一开始就把自己定位成为一名DBA,DBA究竟需要掌握些什么知识和技能呢?以下是我做DBA工作和面试DBA 时,整理的一些DBA方面的三十个问题,三十个大问题中还有许多小的问题,涵括了SQLServer DBA比较多的技术知识点,与大家分享下,希望给有志做DBA的朋友们一些帮助:1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储过程和使用T-SQL查询数据有啥不一样;2. 系统DB有哪些,都有什么作用,需不需要做备份,为什么;损坏了如何做还原(主要是master 阅读全文
posted @ 2013-05-18 09:00 davidkam 阅读(270) 评论(0) 推荐(0) 编辑
摘要: http://database.9sssd.com/mssql/art/951当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的更小。维护任务(例如,重新生成索引或备份表)也可以更快的运行。我 们可以再不通过将表物... 阅读全文
posted @ 2013-05-18 08:59 davidkam 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因。 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得 很大,有些表甚至有上千万行数据,测试团队开始在生产数据库上测试,发现订单提交过程需要花5分钟时间,但在网站上线前的测试中,提交一次订单只需要 2/3秒。 类似这种故事在世界各个角落每天都会上演,几乎每个开发人员在其开发生涯中都会.. 阅读全文
posted @ 2013-05-18 08:58 davidkam 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 一、分区表简介使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性大型表:数据量巨大的表。访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式。分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。注意:只有 SQL Server Enterprise Edition 支持分区。二、创建分区表或分区索引的步骤可以分为以下步骤:1. 确定分区列和分区数2. 确定是否使用多个文件组3. 创建分区函数4. 创建分区 阅读全文
posted @ 2013-05-18 08:56 davidkam 阅读(364) 评论(0) 推荐(1) 编辑
摘要: 1、索引是什么索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。表或视图可以包含以下类型的索引:* 聚集 o 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。 o 只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序 结构中。 * 非聚集 o 非聚集索引具有 阅读全文
posted @ 2013-05-18 08:54 davidkam 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 目前网络数据库的应用已经成为最为广泛的应用之一了,并且关于数据库的安全性,性能都是企业最为关心的事情。数据库渐渐成为企业的命脉,优化查询就解决了 每个关于数据库应用的性能问题,在这里 microsoft sql server 又为我们做了些什么,我们一起关注。 优化查询我们理解起来貌似很抽象,概括范围十分的大,关于数据库这里的优化查询其实很简单,做一个简单的例子。一个数据包经过无数的路由器达到自己的目的 地址,如果在经过每个路由器的时候,路由器都会给他指向最近的路,那么他抵达的速度也就是最快的。在数据库中也是一样,查询优化就是建立一个一个的路标, 就是给这本厚厚的书,写一份简单快捷好用的目录. 阅读全文
posted @ 2013-05-18 08:49 davidkam 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 背景:随着公司的业务迅猛发展,导致部分数据表的数据量剧增(T_ZK_C0075ALog、T_ZK_C007ALog),无法满足用户对查询效率、性能的要求。 意义:在于将大数据从物理上切割为几个相互独立的小部分,从而在查询时只取出其中一个或几个分区,减少影响的数据;另外,对置于不同文件组的分区,并行查询的性能也要高于对整个表的查询性能。 事实上,在SQL Server 2005 中就已经包含了分区功能,甚至在2005之前,还存在一个叫做“Partitioned Views”的功能,能通过将同样结构的表Union在一个View中,实现类似现在分区表的效果。而在SQL Server 2008 中,分 阅读全文
posted @ 2013-05-18 08:47 davidkam 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 1. 纵向分表 纵向分表是指将一个有20列的表根据列拆分成两个表一个表10列一个表11列,这样单个表的容量就会减少很多,可以提高查询的性能,并在一定程度上减少锁行,锁表带来的性能损耗。纵向分表的原则是什么呢,应该怎样拆分呢?答案是根据业务逻辑的需要来拆分,对于一张表如果业务上分两次访问某一张表其中一部分数据,那么就可以根 据每次访问列的不同来做拆分; 另外还可以根据列更新的频率来拆分,例如某些列每天要更新3次,有些列从创建开始基本上很少更新。举例: 假定场景,我有一张用户表,这张表包含列: ID, UserName, Password, RealName, Gender, Email, IsE 阅读全文
posted @ 2013-05-18 08:41 davidkam 阅读(871) 评论(0) 推荐(0) 编辑
摘要: 本文是自己对读写分离数据库方面的一些改进想法一般做数据库读写分离的标准情况是:1台写入数据库+2台查询数据库+1个请求转发器这样的配置容易出现这样的问题:1. 写数据库的写入成为瓶颈2. 查询所需时间还是很长(由于表很大导致)下面这些办法,欢迎大家给出各自的看法解决办法一: 1. 查询数据库:增加内存,以达到通过内存就可以获取大多数的数据,较少I/O耗时带来的延迟 2. 写入数据库:删除索引,以达到最快速的I/O写入耗时这样做的问题是:没有针对特别耗时的查询单独处理,因此当执行某些耗时的查询时,会显得特别慢解决办法二: 1. 查询数据库分成2种,分别为:普通数据读取数据库、特别耗时查询数据库 阅读全文
posted @ 2013-05-18 08:34 davidkam 阅读(193) 评论(0) 推荐(0) 编辑