随笔- 785
文章- 9
评论- 171
阅读-
123万
随笔分类 - 数据库优化实例
我是如何在SQLServer中处理每天四亿三千万记录的
摘要:首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务。项目背景这是给某数据中心做的一个项目,项目难度之大令人发指,这个项目真正的让我感觉到了,商场如战场,...
阅读全文
ql Server 高频,高并发访问中的键查找死锁解析
摘要:死锁对于DBA或是数据库开发人员而言并不陌生,它的引发多种多样,一般而言,数据库应用的开发者在设计时都会有一定的考量进而尽量避免死锁的产生.但有时因为一些特殊应用场景如高频查询,高并发查询下由于数据库设计的潜在问题,一些不易捕捉的死锁可能出现从而影响业务.这里为大家介绍由于设计问题引起的键查找死锁及...
阅读全文
SQL Server 利用批量(batchsize)提交加快数据生成/导入
摘要:在最小化日志操作解析,应用的文章中有朋友反映生成测试数据较慢.在此跟大家分享一个简单的应用,在生成数据过程中采用批量提交的方式以加快数据导入.此应用不光生成测试数据上,在BCP导入数据中,复制初始化快照过程中等都可以根据系统环境调整 batchSize 的大小来提高导入/初始化速度.应用思想:这里简...
阅读全文
数据库SQL优化大总结之 百万级数据库优化方案
摘要:网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑...
阅读全文
数据库索引以及优化
摘要:什么是索引?索引用来快速地寻找那些具有特定值的记录。索引是加速查询主要手段,索引是快速定位数据的技术。索引是一种特殊的文件(innoDB(事务性数据库的首选引擎)数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引:一种特殊的目录,聚集索引和非聚集索引聚集索引:如同字...
阅读全文
怎样玩转千万级别的数据
摘要:大数据处理是一个头疼的问题,特别当达不到专业DBA的技术水准时,对一些数据库方面的问题感到无赖。所以还是有必要了解一些数据库方面的技巧,当然,每个人都有自己的数据库方面的技巧,只是八仙过海,所用的武功不同而已。我把我最常用的几种方式总结来与大家分享,大家还有更多的数据库设计和优化的技巧,尽量的追加到评论中,有时一篇完整的博客评论比主题更为精彩。方法1:采用表分区技术。 第一次听说表分区,是以前的一个oracle培训。oracle既然有表分区,就想到mssql是否有表的分区,当时我回家就google了一把,资料还是有的,在这我儿只是再作一次推广,让更多的人了解和运用这些技术。 表分区,就是将..
阅读全文
SQL Server死锁总结
摘要:1. 死锁原理 根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。 死锁的四个必要条件:互斥条件 (Mutual exclusion) :资源不能被共享,只能由一个进程使用。请求与保持条件 (Hold and wait) :已经得到资源的进程可以再次申请新的资源。非剥夺条件 (No pre-emptio...
阅读全文
SQL Server和Oracle中的锁和死锁(1) - 锁和死锁
摘要:1、锁的作用 ORACLE : 锁是一种机制,当某个数据库对象正被其他进程或用户修改时,这种机制可以保护它不被修改。 为了防止对象被两个不同的用户同时修改,数据库系统创建了锁这种复杂的数据结构,来实现锁定机制,这种机制使用在oracle中称为排队的队列结构,以串行的方式执行锁。 锁的作用如下: 1) 他们坚持一致性和完整性,在事务处理期间,数据和对象保证它们的一致性和完整性。 2) ...
阅读全文
SQL SERVER-高级性能
摘要:--高级性能--虽然可以对数据库进行调整和优化,但是对数据库性能影响最大的却时数据库的设计和开发,而且这种影响从项目的第--天就开始了。通常,所谓的性能优化实际上就是重新开发数据库系统中设计的很糟的那一部分--优化准则--对于作为数据库应用系统的所有者和用户的企业或者组织来说,应当明白良好的数据库设计和精心编写的代码的价值和重要性--花费尽可能多的努力来设计数据库模式,因为所有的优化都要基于数据库...
阅读全文
SQL Server 2005锁的问题
摘要:SQL Server通过锁定资源来保证数据库的一致性。SQL Server中的锁不会对行、页、表或索引等资源有实际影响,它更像一个预订系统,所有任务在数据库内预订某些资源时都遵守它。过多的锁或长时间持有的锁会导致阻塞和其他问题,但锁本身也可能产生一些问题。1 解决锁内存问题为了确定SQL Server中锁使用的内存量,可以监视SQL Server中的“锁内存(KB)”计数器...
阅读全文
深入浅出理解索引结构
摘要:(一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安R...
阅读全文
SQL Tips:兼顾检索速度和精确性
摘要:即使是SQL Server 2000,全文检索的功能已经能够满足基本需要,有迹象表明在设置相关字段为全文索引的时候,即使是使用这个字段进行like操作,速度也会较没有全文索引快很多。不过既然建立全文索引了,大部分人肯定还是使用CONTAINS来进行操作了,这种速度肯定比like操作更快。一般格式是: select [想要的字段名] from [表] where CONTAINS(查询字段名, '...
阅读全文
选择合适的游标类型
摘要:背景: 定义游标的时候, 如果不指定STATIC 关键字的时候, 则默认定义的游标是动态(DYNAMIC) 的 动态(DYNAMIC) 游标会反映在滚动游标时对结果集内的各行所做的所有数据更改。行的数据值、顺序和成员身份在每次提取时都会更改。动态游标不支持ABSOLUTE 提取选项。 因为动态游标会消耗资源去检查基础表的更新, 所以对于复杂的查询, 且不需要反映基础表更新情况的游标处理中, 将游...
阅读全文
游标类型产生的数据检索问题
摘要:表现: 将数据库兼容级别从80 改到90 后, 下面的游标循环不出数据, 但单独SELECT 有结果 DECLARE MyCursor CURSOR LOCAL READ_ONLY FOR SELECT Col1 FROM tbname WITH(NOLOCK) WHERE Name LIKE 'SNET%' AND B_Key IN( SELEC...
阅读全文
SQL各种写法的效率问题
摘要:问: (1)一次插入多条数据时: CREATE TABLE tb(ID int, 名称 NVARCHAR(30), 备注 NVARCHAR(1000)) INSERT tb SELECT 1,'DDD',1 UNION ALL SELECT 1,'5100','D' UNION ALL SELECT 1,'5200','E' 也可以这样: CREATE T...
阅读全文
TOP 1比不加TOP慢的疑惑
摘要:问题描述: 有一个查询如下,去掉TOP 1的时候,很快就出来结果了,但加上TOP 1的时候,一般要2~3秒才出数据,何解? SELECT TOP 1 A.INVNO FROM A, B WHERE A.Item = B.ItemNumber AND B.OwnerCompanyCode IS NOT NULL 问题原因分析: 在使用TOP 1的时候,SQL Server会...
阅读全文
避免把判断处理放入 WHERE 条件
摘要:问题描述 业务需求如下: 有表A,在查询的时候,需要根据标志确定是查询大于某个值的记录,还是小于某个值的记录 A、一般的处理方法 IF @a = 0 SELECT [TranNumber] FROM A WHERE [TranNumber] 10000 B、一句的处理方法 SELECT [TranNumber] FROM A WHERE (...
阅读全文
避免在 SQL Server 中盲目地追求一句处理
摘要:问题描述 业务需求如下: 有表A和表B,这两个表结构一致,为不同的业务服务,现在要写一个存储过程,存储过程接受一个参数,当参数为0时,查询表A,参数为1时,查询表B。 A、一般的处理方法 IF @Flag = 0 SELECT * FROM dbo.A ELSE IF @Flag = 1 SELECT * FROM dbo.B B、一句的处理...
阅读全文