数据库优化
mituan1234567
今天比昨天更好明天比今天更好为此不屈不挠地工作勤勤恳恳地经营孜孜不倦地修炼我们人生的目的和价值就是这样确确实实地存在着
展开
-
SQL Server查询过程的内存实际消耗
或许在应用程序代码中找到的最常见的错误就是这样的查询请求:它不是使用准备好的查询或程序,而是使用非参数特设的查询从数据库中请求数据。 不准备你的查询或者不使用存储过程会增加不必要的SQL Server计划缓存。什么是计划缓存呢?简单地说,它是SQL Server共享内存池的一部分,在这里,解析、编译和执行优化这些查询之后,查询执行计划仍被保存。无论何时执行一个查询,内存的这个区域都会被查找,转载 2013-01-09 10:06:07 · 514 阅读 · 0 评论 -
看懂SqlServer查询计划
http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html阅读目录开始Sql Server 查找记录的方法Sql Server Join 方式更具体执行过程索引统计信息:查询计划的选择依据优化视图查询推荐阅读-MSDN文章对于SqlServer的优化来说,可能优化查询是很常见的事情。关于数据库的优化,本身转载 2013-01-14 16:28:13 · 330 阅读 · 0 评论 -
SqlDataAdapter.update结合事务(SqlTransaction)批量更新数据
//此处的程序功能主要是将一个库中的表数据(源表)更新到另外一个库中的表数据(目标表)//实现目标表的数据和源表数据一致,已包括增加,更新和删除数据记录功能//主调用代码块 SqlConnection conn = new SqlConnection("data source=.;user id=sa;password=sa;initial catalog=test转载 2013-01-31 10:32:09 · 1540 阅读 · 0 评论 -
使用 DataAdapter 执行批量更新
【理论基础】 在2.0以前版本的 ADO.NET 中,使用 DataSet 中的更改来更新数据库时,DataAdapter 的 Update 方法每次更新数据库的一行。因为该方法循环访问指定 DataTable 中的行,所以,会检查每个 DataRow,确定是否已修改。如果该行已修改,将根据该行的 RowState 属性值调用相应的 UpdateCommand、InsertComma转载 2013-01-31 10:15:39 · 583 阅读 · 0 评论 -
SQLServer 优化SQL语句:in 和not in的替代方案
原文出处:http://www.cnblogs.com/luoht/archive/2010/03/01/1676049.html用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。 但是用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: SQL试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的转载 2013-02-01 09:38:28 · 424 阅读 · 0 评论 -
主键设计用什么字段类型比较好?
主键的必要性: 有些朋友可能不提倡数据库表必须要主键,但在我的思考中,觉得每个表都应该具有主键,不管是单主键还是双主键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,本记录的修改与删除,当我们没有主键时,这些操作会变的非常麻烦。 主键的无意义性: 我强调主键不应该具有实际的意义,这可能对于一些朋友来说不太认同,比如订单表吧,会有“订转载 2013-02-16 10:53:10 · 631 阅读 · 0 评论 -
查询优化及分页算法方案
文章来源:http://www.7dspace.com/doc/20/0602/200622805282828705.htm随着“金盾工程”建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种、各部门。与此同时,应用系统体系的核心、系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量。那么,如何实现快速转载 2013-02-16 10:11:23 · 316 阅读 · 0 评论 -
SQL Server 索引中include的魅力(具有包含性列的索引)
SQL Server 索引中include的魅力(具有包含性列的索引)2010-01-11 20:44 by 听风吹雨, 6199 阅读, 16 评论, 收藏, 编辑开文之前首先要讲讲几个概念 【覆盖查询】 当索引包含查询引用的所有列时,它通常称为“覆盖查询”。 【索引覆盖】 如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+转载 2013-02-19 09:55:00 · 443 阅读 · 0 评论 -
SQL Server 中Inner join 和where的效率差异
http://www.knowsky.com/344387.html今天,手头上正在作的一个项目,在生成报表时,客户感觉太慢,于是,各处检查,看可否提示效率。界面上的都改进了,提升不大。如是在SQL 语句上下功夫。(我这人比较懒,对简单的语句和查询都没有经过仔细优化的,一般只对姚使用left join,outer join,group by 以及carsor的语句会仔细写并用数据库理论考虑转载 2013-03-05 09:15:12 · 579 阅读 · 0 评论 -
ADO.NET批量插入数据方法比较
http://www.cnblogs.com/xyd21c/archive/2011/01/07/1929861.html技术方案一:利用数据库访问类调用存储过程,利用循环逐条插入。很明显,这种方式效率并不高。技术方案二:由于是考虑到大数据量的批量插入,于是想到了ADO.NET2.0的一个新的特性:SqlBulkCopy。有关这个的性能,很早之前我亲自做过性能测试,效率非常高。转载 2013-01-24 11:17:28 · 1612 阅读 · 0 评论 -
参数化sql查询语句,书写安全的SQL语句
1.尽量使用存储过程 2.尽量使用用静态SQL语句,动态SQL容易造成注入3.尽量对存储过程参数限制大小4.前台程序过滤掉SQL特殊字符5.为执行用户,提供最小的权限,防止别人恶意修改数据。转载 2013-01-10 14:39:26 · 526 阅读 · 0 评论 -
Sql Server参数化查询之where in和like实现详解
http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html身为一名小小的程序猿,在日常开发中不可以避免的要和where in和like打交道,在大多数情况下我们传的参数不多简单做下单引号、敏感字符转义之后就直接拼进了SQL,执行查询,搞定。若有一天你不可避免的需要提高SQL的查询性能,需要一次性where in 几百、上千转载 2013-01-09 10:22:00 · 482 阅读 · 0 评论 -
windows与linux系统计数器与硬件分析
性能计数器(Performance Counter),也叫性能监视器。一个人健康状况如何,我们通过对其做各项体检获得相关的状况指标,如血压、心跳,肺活量等。那么在做性能测试过程中,整个系统的软硬件进行监控也必不可少,监控所获得的数据也是我们分析系统性能的主要依据。 在整个系统中,对于不同的软件和硬件,我们对其监控的指标也不一样,就像一个公司中的所有人员,其每个人的职责不同,评判和考核的标准也转载 2013-01-08 13:38:04 · 609 阅读 · 0 评论 -
Windows常见性能计数器
LogicalDisk\% Free Space 它测量选定逻辑磁盘上的可用空间百分比。请注意,如果此值低于 15%,则表示可用空间不足,操作系统无法存储关键文件。一个最直接的解决方案是增加更多的磁盘空间。PhysicalDisk\% Idle Time 它测量磁盘在采样间隔期间的空闲时间百分比。如果此计数器低于 20%,则表示磁盘系统处于满负荷状态。可考虑将当前的磁盘系统更换为速度更快的磁盘转载 2013-01-08 13:46:29 · 480 阅读 · 0 评论 -
Oracle服务器如何科学组织RAID阵列
我们在部署服务器时通常都免不了RAID阵列级别的选择,RAID技术发展到今天已经有数十种之多了,但我们在生产系统上常用的也就只有几种,如0,1,5,0+1。读者朋友可能对各个级别的RAID原理已经非常熟悉了,甚至能背诵出来,但面临真正在生产系统中选择最适合应用系统的RAID级别时,可能没多少心理有底,本文就oracle数据库服务器在选择RAID阵列级别时做一个介绍,希望对还心存疑虑的人们吃一粒定心转载 2013-01-08 14:41:31 · 465 阅读 · 0 评论 -
数据库锁表及阻塞的原因和解决办法 数据库锁表及阻塞的原因和解决办法
问题说明 数据库锁表及阻塞的原因和解决办法 数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不转载 2013-01-08 17:07:20 · 1581 阅读 · 0 评论 -
SQL Server 2008 参数化查询
http://blog.csdn.net/royalwzy/article/details/6176134我将讨论如果一个查询可以被参数化,那么SQL Server优化器怎样尝试将其参数化,以及你可以怎样建立你自己的参数化查询.1.什么是参数化查询?一个简单理解参数化查询的方式是把它看做只是一个T-SQL查询,它接受控制这个查询返回什么的参数.通过使用不同的参数,一个参数化查询返回转载 2013-01-06 16:33:24 · 406 阅读 · 0 评论 -
动态添加SqlParameter
http://www.gkxsn.com/6342701637471875001.html动态向SqlParameter 里添加相应参数,方法如下先定义一个List,然后再往List里面添加SqlParameter对象,然后将List转为SqlParameter数组即可 List ilist = new List(); ilist.Add(new Sql转载 2013-01-09 15:16:15 · 993 阅读 · 0 评论 -
索引扫描与索引查找
http://www.blogjava.net/jjshcc/archive/2010/08/18/329233.html扫描与查找操作均是SQL Server从表或索引中读取数据采用的迭代器,这些也是SQL Server支持的最基本的运算.几乎在每一个查询计划中都可以找到,因此理解它们的不同是很重要的,扫描是在整张表上进行处理,而索引是在整个页级上进行处理,而查找则返回特定谓词上一个或多转载 2013-01-10 10:13:05 · 384 阅读 · 0 评论 -
SQLSERVER聚集索引的整理(重建)的必要性测试
http://www.soaspx.com/dotnet/sql/mssql/sql2000/sqlserver2000_20120331_8856.html问题:聚集索引是否需要整理?在什么情况下需要整理?整理的效果如何?有没有负面作用?测试环境:WIN2003+SQL2008R2测试表:wkf_test 存放12767550条记录,wkf_test_all表是该表的转载 2013-02-26 11:01:29 · 561 阅读 · 0 评论 -
硬盘的原理以及SQL Server如何利用硬盘原理减少IO
http://www.soaspx.com/dotnet/sql/mssql/sql2000/sqlserver2000_20120820_9507.html简介 硬盘作为现在计算机内部最后的机械存储部件,速度相比较内存和Cache而言会慢好几个数量级。但所幸的是,硬盘的成本是远远低于内存的。因此硬盘作为永久存储器是比较合适的,所幸的是为了克服硬盘慢速带来的问题,操作系统会对转载 2013-02-26 11:04:46 · 296 阅读 · 0 评论 -
复合索引是如何工作的?
http://tech.it168.com/o/2006-04-09/200604091434742.shtml作者:ahlu 时间:05-01-30 17:38 复合索引是如何工作的?比如表test有索引ind(a,b)在A,B两列建立索引,a列中等于100的有100,000行,而b等于200的有500行。例如:查出a等于100,b等于200的所有语句S转载 2013-03-13 11:23:35 · 1060 阅读 · 0 评论 -
随机选择数据库记录的方法
http://blog.csdn.net/l_serein/article/details/4446498(使用Randomize函数,通过SQL语句实现) 对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环: Randomize RNumber = Int(Rnd*转载 2014-03-04 15:21:38 · 644 阅读 · 0 评论 -
随机读取N条记录(MySQL、SQL Server、Access、Oracle、postgreSQL)
http://blog.csdn.net/melon_xyj/article/details/5804711利用一条SQL语句从数据库Table表中随机获取N条记录,各数据库的SQL语句略有不同,如下:1、MySql Select * From TABLE Order By Rand() Limit N 以上代码效率不高,自己对1000条数转载 2014-03-04 15:30:51 · 588 阅读 · 0 评论 -
sql server 随机抽取N条数据
http://blog.163.com/09zzy@126/blog/static/711976652011111225415307/Select Top 5 * From 表名 Order By NEWID() , newid 产生的新的值是不固定的 。 在Select表里的数据的NEWID() 函数时候 随即选出N条记录 。回答人的补充 2011-04-21 22转载 2014-03-04 15:29:33 · 1139 阅读 · 0 评论 -
代码分析ADO.NET数据异步处理
http://developer.51cto.com/art/200911/160714.htm为你解析ADO.NET应用程序归纳总结ADO.NET对象学习笔记:教你使用ADO.NET Excel读取文快速上手ADO.NET数据库运用关于更新ADO.NET数据源方法介绍很多开发语言都支持异步通信,在ADO.NET中支持异步处理的提供程序有System.Data.Sq转载 2014-03-05 15:51:31 · 923 阅读 · 0 评论 -
sql 百万级数据库优化方案
http://www.cnblogs.com/ywkpl/archive/2011/04/22/2024743.html1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id fr转载 2014-08-25 11:36:48 · 470 阅读 · 0 评论 -
SQLServer 优化SQL语句 in 和not in的替代方案
http://www.jb51.net/article/23293.htm但是用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: SQL试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成转载 2014-11-07 15:13:31 · 955 阅读 · 0 评论 -
Perfmon - Windows 自带系统监测工具
http://blog.csdn.net/oscar999/article/details/7918385一、 简述可以用于监视CPU使用率、内存使用率、硬盘读写速度、网络速度等。Perfmon提供了图表化的系统性能实时监视器、性能日志和警报管理,系统的性能日志可定义为二进制文件、文本文件、SQLSERVER表记录等方式,可以很方便地使用第三方工具进行性能分析。转载 2015-07-05 16:19:08 · 1123 阅读 · 0 评论 -
大数据量的存储分表常见算法
http://blog.163.com/lgh_2002/blog/static/4401752620131289556228/当一个应用的数据量大的时候,我们用单表和单库来存储会严重影响操作速度,如mysql的myisam存储,我们经过测试,200w以下的时候,mysql的访问速度都很快,但是如果超过200w以上的数据,他的访问速度会急剧下降,影响到我们webapp的访问速度,而且数据量转载 2015-07-05 18:19:59 · 586 阅读 · 0 评论 -
从表中取20-30条记录的SQL语句
mysql的方法mysql> select * from student limit 20,10;+-----+-----------+------+-------+------+| sid | studentid | age | name | sex |+-----+-----------+------+-------+------+| 21 | 00010014转载 2014-02-21 11:04:01 · 3136 阅读 · 0 评论 -
使用 TABLESAMPLE 限制结果集
使用 TABLESAMPLE 限制结果集 【转载】http://www.cnblogs.com/chenxizhang/archive/2009/05/19/1460040.html该文转载自:http://msdn.microsoft.com/zh-cn/library/ms189108.aspx TABLESAMPLE是SQL 2005开始引入的一个新语法,它可以针对表转载 2013-09-14 11:04:00 · 750 阅读 · 0 评论 -
如何编写出高效的数据库连接池(附带完整代码C#和Java实现)
http://blog.csdn.net/mr_zhao/article/details/1587373相关技术:连接池引用记数多线程Timer类运行基理C#.NetJava适宜人群数据库应用程序程序员系统分析员模块设计师有一定功底的程序员目录引言数据库连接池(Connection Pool)的工作原理连接池关键问题分析并发问转载 2013-03-04 11:13:24 · 379 阅读 · 0 评论 -
在ADO.NET中用参数化查询缩短开发时间
http://tech.ccidnet.com/art/1105/20070327/1046171_1.html一段时间以来,存储过程一直是企业应用程序开发数据访问的首选方法。存储过程的安全性更高、封装能力更强,并能执行复杂的逻辑,且不会打乱应用程序代码。但是,它也存在一些缺点:• 开发者倾向于在存储过程中加入商业逻辑。 • 更改过程时必须改变开发环境。 • 查找过程所需的参数转载 2013-03-18 14:39:45 · 793 阅读 · 0 评论 -
存储过程和sql语句的优缺点
http://3871584.blog.163.com/blog/static/33526564201232501919316/答:存储过程的优缺点:优点:1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划-- 实际上是转载 2013-03-19 10:31:23 · 1283 阅读 · 0 评论 -
大型高并发高负载web应用系统架构-数据库架构策略
http://blog.csdn.net/zhangzhaokun/article/details/4711693在WEB网站的规模从小到大不断扩展的过程中,数据库的访问压力也不断的增加,数据库的架构也需要动态扩展,在数据库的扩展过程基本上包含如下几步,每一个扩展都可以比上一步骤的部署方式的性能得到数量级的提升。 1、WEB应用和数据库部署在同一台服务器上 一般转载 2013-04-01 11:13:24 · 639 阅读 · 0 评论 -
高效分布式数据库缓存经典解决方案
原文:http://topic.csdn.net/u/20080722/22/3a63114f-31ea-4174-ba9f-0c0d0c8cb293.html 为什么要用缓存?如果问这个问题说明你还是新手,数据库吞吐量毕竟有限,每秒读写5000次了不起了,如果不用缓存,假设一个页面有100个数据库操作,50个用户并发数据库就歇菜,这样最多能支撑的pv也就50*3600*15=27转载 2013-04-01 14:05:12 · 531 阅读 · 0 评论 -
SQL Server 2005 扫描计数产生原因分析
http://www.cnblogs.com/zping/archive/2008/07/22/1249038.html在上次做分页分析是分析时,执行下面语句:SELECT TOP 19 *FROM [dbo].[[[zping.com]]]]]WHERE (ID NOT IN (SELECT TOP (10*(10000-1)) ID FROM [dbo].[转载 2013-04-22 09:40:31 · 2483 阅读 · 0 评论 -
索引扫描与索引查找
http://www.blogjava.net/jjshcc/archive/2010/08/18/329233.html扫描与查找操作均是SQL Server从表或索引中读取数据采用的迭代器,这些也是SQL Server支持的最基本的运算.几乎在每一个查询计划中都可以找到,因此理解它们的不同是很重要的,扫描是在整张表上进行处理,而索引是在整个页级上进行处理,而查找则返回特定谓词上一个或多转载 2013-04-22 10:03:23 · 564 阅读 · 0 评论 -
sqlserver三种分页方式性能比较
http://www.cnblogs.com/onlytiancai/archive/2011/07/30/2122182.htmlLiwu_Items表,CreateTime列建立聚集索引第一种,sqlserver2005特有的分页语法declare @page intdeclare @pagesize intset @page = 2set @pagesize =转载 2013-04-22 09:06:35 · 602 阅读 · 0 评论