
数据库
文章平均质量分 72
sadstory
这个作者很懒,什么都没留下…
展开
-
MS 多维数据库-基本架构
多维数据库是一个非常有趣的领域,在企业应用中得到越来越多的应用,其创造的价值恐怕已经接近于数据库了。当然在这个领域Oracle和IBM是当之无愧的老大,市场占有份额加起来超过了8层了吧。但是单纯从工具的易用性和方便性角度来讲,MS的AS工具无疑占据了领先地位。为什么没人买呢?引用一个做市场的哥们的话:因为这个世界太浮躁了,老板们不愿意去培训员工使用一套工具,它们只愿意花钱去买看得见的东西。原创 2009-07-15 20:23:00 · 1811 阅读 · 2 评论 -
SQL使用--Shrink所有数据库的Log
数据处理是当前数据库常见的应用。一些数据库组成DATA mart从数据源里抽取关心的表进行聚合,将结果推送到算法中进行处理,从而高性能的回答用户的查询。 总所周知,Log文件是记录数据库操作的文件,对数据库的完整性,一致性有着重要的意义。作为数据处理的一个常见后果是Log文件的超级庞大。虽然将数据库的恢复模式设置成Simple可以提醒数据库尽量使用已有的Log空间,而不是申请新的,后者将会原创 2009-11-10 18:09:00 · 1166 阅读 · 0 评论 -
SQL 使用-Update table
对问题的理解是解决问题的前提,今天遇到一个项目中的问题让我深刻的体会到这一点。 两个表:T1Term Domain WithAncestorcar x.com ?bike y.com ?car a.x.com ? T2Parent Domainx.com a.x.com 求出T1中的WithAnces原创 2009-11-09 18:47:00 · 3890 阅读 · 0 评论 -
SQL存储过程调试方法
在过去的一年时间里,很大一部分时间花在SQL编程上,刚开始是改别人的,后来越来越烦躁,就重写了很多的代码。当然重写的代码一方面是前面的代码比较换乱,不易阅读,另一方面是新增加的功能接连到来,仿佛往一个袋子里塞东西,慢慢的,就要把袋子塞暴了。重写代码避免了这些麻烦,可也引入的错误,几经反复,终于稳定下来。我也痛定思痛,把写sql的经验教训总结如下。 经验1,模块化。虽然SQL只是脚本原创 2009-07-08 21:19:00 · 2045 阅读 · 0 评论 -
在批处理文件中调用SQL
使用sqlcmd可以在批处理脚本中执行SQL。虽然这个命令的参数很多,但幸运的是,我们不需要全部理解,在这里简要介绍以下几个: { -U login_id [ -P password ] } | –E trusted connection }] 如果指定了-E就不需要指定用户名密码,当然指定了用户名密码就不用-E了;-S server_name [ / instance_name ] 数据原创 2009-07-07 19:32:00 · 1671 阅读 · 0 评论 -
对分区表进行alter-switch时遇到的错误
将一个表的数据加入分区表中,可以通过如下步骤进行:创建一个和目标表一样定义的表;在表上加上constraint以确保表的数据在目标分区里;Alter table 源表 switch to 目标表 partition 分区号其中分区号可以通过$partition.partion_func( column value)获得这个过程比insert select要快很多,因为不原创 2009-07-03 09:22:00 · 1438 阅读 · 1 评论 -
SQL研究-非平衡树聚合
今天,我重新检查了一个困扰已久的问题,在经过仔细的考虑,算是找到了一个比较合理的解决办法。 问题是这样的,表StoreProductSales记录一系列的商场以及它们每天的营业额。商场与商场之间有从属关系,记录在Store_WithAcestor表里。当用户查询某个商场的对某个产品的销售额时,除了返回自己的营业额,还需要包含所有子商场的营业额。 示例结构和数据如下:Sto原创 2009-07-01 18:29:00 · 908 阅读 · 0 评论 -
数据库引擎-事务和并发
事务是一个很基本的概念,简单的说就是一个组操作一起做完。当两个事务并发执行时,可能会出现以下的现象:修改丢失:两个线程同时读出某行的值,修改完先后保存回去,先保存的值就丢失了。假设你和你老婆在两个ATM上同时对同一个账号存钱,开始时账户里 有10万,然后你存1万,你老婆存2千。你们家收入不少,不过在北京买房子还是不够的。题外话。如果出现了这里的错误,糟糕,你会发现存完了只有11万或原创 2009-06-26 18:42:00 · 570 阅读 · 0 评论 -
SQL研究-分区表
所谓分区表就是当表太大的时候,比如1百万行,按照某个特殊的列分成10份,每份10万行左右,要求这一列中的值是有限的,并且每个值对应的行数基本相等。使用分区表可以方便的进行整个分区的增减,只涉及元数据而不涉及具体的数据写入操作。 创建一个分区表需要经过以下几个步骤:1. 创建分区函数,它附则将插入的数据放到相应的分区里面去; 2. 创建分区方案,它附则确定每个分区的数据存放在什么地方原创 2009-06-23 21:09:00 · 405 阅读 · 0 评论 -
数据库引擎-线程和任务
每个数据库实例都是一个独立的操作系统进程。每个进程可能同时服务于上千个连接,每个连接都需要一个或多个线程来接受请求,处理并返回结果。此外,数据库进程还需要线程维护网络通讯的线程,各个服务之间进行通讯的线程。 数据库是如何调度这些线程呢?数据库实例有自己的调度机制,这样当需要线程调用时,它就不需要访问系统内核。它通常维护一个线程缓冲区,因此它不需要进行太多的创建或销毁的操作。可以通过ma原创 2009-06-24 20:02:00 · 511 阅读 · 0 评论 -
SQL Server-DMV 初探
进来不断的进行数据的清除和整理,结果一个过程花费了48个小时还没有结果。按照我们任务的规模,通常可以在几个小时内完成。考察了内存 CPU负载都不高。问题究竟在哪里呢?决定考察下动态管理视图,首先看了sys.dm_od_tasks。使用sessionid做过滤,看到了9个task,检查了下文档明白了,因为机器上有8个CPU,外加一个协调的task。在这个视图里,还看到所有的task都原创 2009-08-21 19:55:00 · 2694 阅读 · 0 评论 -
试着解决http://topic.youkuaiyun.com/u/20090610/20/92c3d2eb-4ee5-4df1-bc09-2fd32254fa06_3.html
优快云网友发布了一个题目,如下连接所示:http://topic.youkuaiyun.com/u/20090610/20/92c3d2eb-4ee5-4df1-bc09-2fd32254fa06_3.html 个人比较感兴趣,于是试着给了如下答案: 首先创建表:CREATE TABLE [dbo].[ProductOrder]( [pno] [int] NULL, [pQty] [原创 2009-08-06 14:02:00 · 1976 阅读 · 0 评论 -
SQL研究-相似的数据类型
数据类型在精度,范围上有较大的差别。选择合适的类型可以减少table和index的大小,进而减少IO的开销,提高效率。本文介绍基本的数值类型及其之间的细小差别。 最常用的数值类型是int,但是它未必是最佳选择。bigint,smallint,tinyint可以应用在特殊场合。他们的特性如下表所示:Data type Range Storage原创 2009-07-31 10:39:00 · 596 阅读 · 0 评论 -
SQL Server通用的分区增加和删除的算法
本算法默认分去函数中已经包含了足够多的分区。不需要我们去动态的创建分区。 首先是将一个数据表加入到分区表的方法:[dbo].[SP_Helper_Partition_Add] @SrcTable nvarchar(256), 待加入的表 @DestTable nvarchar(256), 目标表 @idxOnDest nvarchar(1024), 目标表上的索引创建语句 @Parti原创 2009-07-21 18:49:00 · 546 阅读 · 0 评论 -
一次神奇的SQL 错误调试经历
上周接到一个奇怪的bug,一个曾经运行得很好的存储过程突然产生了错误的结果。负责维护的兄弟们很负责任的对错误进行了跟踪,并把错误定位一个如下的语句: SELECT *into SomeTableFROM A join B on A.id=B.id join C on A.id=C.id 他们发现从SomeTable做查询的时候,出来的结果比实际结果要原创 2010-05-11 18:49:00 · 577 阅读 · 0 评论