2013年12月1日
摘要: [本文篇幅较长,可以通过目录查看您感兴趣的内容,或者下载格式良好的PDF版本文件查看]目录 一、ORM的"三国志"2 1,PDF.NET诞生历程22,Linq2Sql&EF:33,微型ORM崛起4二、一决高下42.1,ORM没有DataSet快?42.1.1,ORM生成SQL的质量问题42.1.2,DataReader没有DataSet快?52,ORM的三个火枪手62.1,委托+缓存62.2,表达式树112.3,Emit12三、华山论剑143.1,参赛阵容143.2,比赛内容143.3,武功介绍153.3.1,EF的招式:153.3.1,DataSet 的招式:16 阅读全文
posted @ 2013-12-01 02:12 davidkam 阅读(535) 评论(0) 推荐(0) 编辑
摘要: Yahoo!的 Exceptional Performance团队为改善 Web性能带来最佳实践。他们为此进行了一系列的实验、开发了各种工具、写了大量的文章和博客并在各种会议上参与探讨。最佳实践的核心就是旨在提高网站性能。原版猛戳:Best Practices for Speeding Up Your Web Site,Excetional Performance 团队总结出了一系列可以提高网站速度的方法。可以分为 7大类 35条。 包括内容 、服务器 、 CSS 、 JavaScript 、Cookie 、图片 、移动应用 ,七部分。一、内容部分尽量减少 HTTP请求减少 DNS查找避免跳转 阅读全文
posted @ 2013-12-01 02:07 davidkam 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 发布网站的过程如下:1、安装数据库系统2、建立数据库,执行sql3、安装iis4、在本地机子上发布网站5、把发布好的东西拷贝到IIS上1、安装数据库系统:出现错误:必须使用角色管理工具 安装或配置microsoft.net framework 3.5 sp1 在如下地址中找到答案:http://blog.csdn.net/geniusqiao/article/details/7406066具体内容如下:在window server 2008 64位系统上安装sqlserver2008 的时候报的一个错误。首先 sqlserver2008 要求 framework 3.5 ,在2003的时候,安 阅读全文
posted @ 2013-12-01 01:46 davidkam 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 上班的时候突然有一个想法,sqlserver能否调用webservice发送短信呢?经过查找资料,终于找到了解决办法,现将步骤贴到下面:(1)开启sqlserver组件功能,如果不开启这个组件功能,那么在sqlserver执行语句时将不会成功。sp_configure 'show advanced options', 1;GORECONFIGURE;GOsp_configure 'Ole Automation Procedures', 1;GORECONFIGURE;GO以数据库管理员的身份执行上面的语句,返回结果如下:配置选项 'show advanc 阅读全文
posted @ 2013-12-01 01:43 davidkam 阅读(895) 评论(0) 推荐(0) 编辑
摘要: 摘要:一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意。所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项。关 于数据库优化方面的文章很多,但是有的写的似是而非,有的不切实际,对一个数据库来说,只能做到更优,不可能最优,并且由于实际需求不同,优化方案还是有 所差异,根据实际需要关心的方面(速度、存储空间、可维护性、可拓展性)来优化数据库,而这些方面往往又是相互矛盾的,下面结合网上的一些看法和自己的一 些观点做个总结。 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优,也不单单是开发阶段的事情.. 阅读全文
posted @ 2013-12-01 01:38 davidkam 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 数据库中的数据编辑是我们遇到的最频繁的工作,这一个随笔中我来总结一下最常用的数据编辑。 select into 经常遇到一种情况是,我们希望创建一个新表,表中的数据来源于原有的一个表;原有一个表,但是这个表中的数据已经很混乱,我们希望把这些数据备份出来,然后把原有的表中的数据清除,重新导入;在这些情况下我们可以使用select into语句。 如果当前用户拥有建表权限,在select语句使用关键字into可以在数据库中创建新的 表。这个语句只需要把into new_table_name加到选择出的列名之后,from关键字之前,当然数据可以来源于一个或多个表中。需要说明的是在新表中只包... 阅读全文
posted @ 2013-12-01 01:36 davidkam 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 在大中型项目中,在数据库设计的时候,考虑到数据库最大承受数据量,通常会把数据库或者数据表水平切分,以降低单个库,单个表的压 力。我这里介绍两个我们项目中常用的数据表切分方法。当然这些方法都是在程序中使用一定的技巧来路由到具体的表的。首先我们要确认根据什么来水平切分? 在我们的系统(SNS)中,用户的UID贯穿系统,唯一自增长,根据这个字段分表,再好不过。 方法一:使用MD5哈希 做法是对UID进行md5加密,然后取前几位(我们这里取前两位),然后就可以将不同的UID哈希到不同的用户表(user_xx)中了。function getTable( $uid ){ $ext=substr ... 阅读全文
posted @ 2013-12-01 01:36 davidkam 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 三大范式: 第1规范:没有重复的组或多值的列,这是数据库设计的最低要求。 第2规范: 每个非关键字段必须依赖于主关键字,不能依赖于一个组合式主关键字的某些组成部分。消除部分依赖,大部分情况下,数据库设计都应该达到第二范式。 第3规范: 一个非关键字段不能依赖于另一个非关键字段。消除传递依赖,达到第三范式应该是系统中大部分表的要求,除非一些特殊作用的表。 更高的范式要求这里就不再作介绍了,个人认为,如果全部达到第二范式,大部分达到第三范式,系统会产生较少的列和较多的表,因而减少了数据冗余,也利于性能的提高。 完全按照三大范式规范化设计的系统几乎是不可能的,除非系统特别的小,在规范化... 阅读全文
posted @ 2013-12-01 01:33 davidkam 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 摘要:本来是打算先写SQLServer历史的,不过感觉写那部分内容比较难还需要多查些资料。于是调整了下顺序写下简单的Insert语句。 不过感觉写那部分内容比较难还需要多查些资料。于是调整了下顺序写下简单的Insert语句。数据库结构还是采用上一篇的结构。具体查看上一篇文章《擦亮自己的眼睛去看SQL Server之简单Select》。今天讨论的语句也比较简单,Insert语句。 一、Insert脚本 insertinto Test([Name]) values('xiaojun') 没什么好说的,因为想写这样的语句太简单。 二、 语句分析 这条语句到底发生了什么呢?假... 阅读全文
posted @ 2013-12-01 01:32 davidkam 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 摘要:这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句。 这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句。不知道大家有没有想过到底是什么东西让SQL Server能理解我们写的select。这中间到底发生了什么,是不是有过冲动想去了解。至少我曾经冲动想去了解,但当时主要在研究CLR以及 WebForm相关知识。后来主要精力放在研究SQL Server内部机制,今天就给大家介绍下这条语句。 一、范例数据库脚本 createdatabase Test go alterdatabase Test set recovery simple... 阅读全文
posted @ 2013-12-01 01:31 davidkam 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 虽然查询速度慢的原因很多,但是如果通过一定的优化,也可以使查询问题得到一定程度的解决。 查询速度慢的原因很多,常见如下几种:没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)I/O吞吐量小,形成了瓶颈效应。没有创建计算列导致查询不优化。内存不足网络速度慢查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)sp_lock, sp_who, 活动的用户查看,原因是读写竞争资源。返回了不必要的行和列查询语句不好,没有优化 可以通过如下方法来优化查询 :把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可... 阅读全文
posted @ 2013-12-01 01:30 davidkam 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 最近公司来一个非常虎的DBA,10几年的经验,这里就称之为蔡老师吧,在征得我们蔡老同意的前提下 ,我们来分享一下蔡老给我们带来的宝贵财富,欢迎其他的DBA来拍砖。目录1、什么是执行计划?执行计划是依赖于什么信息2、 统一SQL语句的写法减少解析开销3、 减少SQL语句的嵌套4、 使用“临时表”暂存中间结果5、 OLTP系统SQL语句必须采用绑定变量6、 倾斜字段的绑定变量窥测问题7、 begin tran的事务要尽量地小8、 一些SQL查询语句应加上nolock9、加nolock后查询经常发生页分裂的表,容易产生跳读或重复读10、聚集索引没有建在表的顺序字段上,该表容易发生页分裂11、使用复合 阅读全文
posted @ 2013-12-01 01:28 davidkam 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 一、理解索引的结构 索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。微软 的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。 SQL Server 中数据存储的基本单位是页(Page)。数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 每次读取或写入数据... 阅读全文
posted @ 2013-12-01 01:26 davidkam 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 1. 在生产环境中不要出现Select * 这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多。但我这里还是要说一下。 不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需要产生消耗,这点消耗在我看来完全可以忽略不计。更主要的原因来自以下两点:扩展方面的问题造成额外的书签查找或是由查找变为扫描 扩展方面的问题是当表中添加一个列时,Select *会把这一列也囊括进去,从而造成上面的第二种问题。 而额外的IO这点显而易见,当查找不需要的列时自然会产生不必要的IO,下面我们通过一个非常简单的例子来比较这两种差别,如图1所示。图1.*带来的不必要的IO 2. 声... 阅读全文
posted @ 2013-12-01 01:25 davidkam 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 1.1.1 摘要 在开发过程中,我们不时会遇到系统性能瓶颈问题,而引起这一问题原因可以很多,有可能是代码不够高效、有可能是硬件或网络问题,也有可能是数据库设计的问题。 本篇博文将针对一些常用的数据库性能调休方法进行介绍,而且,为了编写高效的SQL代码,我们需要掌握一些基本代码优化的技巧,所以,我们将从一些基本优化技巧进行介绍。 本文目录代码中的问题数据库性能开销使用存储过程使用数据库事务使用SqlBulkCopy使用表参数 1.1.2 正文 假设,我们要设计一个博客系统,其中包含一个用户表(User),它用来存储用户的账户名、密码、显示名称和注册日期等信息。 由于时间的关系,我们已... 阅读全文
posted @ 2013-12-01 01:23 davidkam 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 无意间发现某站点存在 SQL 注入漏洞,于是利用这个漏洞提权并获取服务器控制权。这个案例很典型,像是教科书式的典型入侵步骤,下面就以这个案例展示从 SQL 注入到获取目标服务器控制权限的全过程。发现 访问某站点的搜索页面,发现输入单引号“'”就直接报错,这就说明这个页面存在 注入的可能。为了证实这点,首先闭合请求访问语句,然后对比返回结果的差异。 发现访问 http://foo/rss.aspx?keyword=lucky 以及 http://foo/rss.aspx?keyword=lucky')); 都可以被执行,但是返回的结果不同。根据下面的错误信息,是注释掉了 ORDE 阅读全文
posted @ 2013-12-01 01:18 davidkam 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 先来介绍一下子服务器的基本情况,windows 2000 adv server 中文版,据称打过了sp3,asp+iis+mssql 。首先扫描了一下子端口,呵呵,开始的一般步骤。端口21开放: FTP (Control)端口80开放: HTTP, World Wide Web端口135开放: Location Service端口139开放: NETBIOS Session Service端口1433开放: Microsoft-SQL-Server开了几个很经典的端口,应该说个个都很经典啊。既然确定好了端口,那就有针对性地扫描一下看看开了什么共享么,faint,老兄把ipc$,admin$,c 阅读全文
posted @ 2013-12-01 01:09 davidkam 阅读(6663) 评论(0) 推荐(0) 编辑
摘要: 在入侵过程中,得到SQLserver的权限,想进一步得到system权限的方法总结*************************** 利用xp_cmdshell ***********************************一.更改sa口令方法:用sql综合利用工具连接后,执行命令:exec sp_password NULL,'新密码','sa'(提示:慎用!)二.简单修补sa弱口令.方法1:查询分离器连接后执行:if exists (select * from dbo.sysobjects where id = object_id(N'[d 阅读全文
posted @ 2013-12-01 00:46 davidkam 阅读(1054) 评论(0) 推荐(0) 编辑