数据库
yuanyuanispeak
这个作者很懒,什么都没留下…
展开
-
DB主从一致性架构优化4种方法
需求缘起大部分互联网的业务都是“读多写少”的场景,数据库层面,读性能往往成为瓶颈。如下图:业界通常采用“一主多从,读写分离,冗余多个读库”的数据库架构来提升数据库的读性能。这种架构的一个潜在缺点是,业务方有可能读取到并不是最新的旧数据:(1)系统先对DB-master进行了一个写操作,写主库(2)很短的时间内并发进行了一个读操作,读从库,此时主从同步没有完成转载 2016-08-09 15:06:46 · 1207 阅读 · 0 评论 -
理解SQL SERVER中的分区表
分区表是在SQL SERVER2005之后的版本引入的特性。这个特性允许把逻辑上的一个表在物理上分为很多部分。而对于SQL SERVER2005之前版本,所谓的分区表仅仅是分布式视图,也就是多个表做union操作. 分区表在逻辑上是一个表,而物理上是多个表.这意味着从用户的角度来看,分区表和普通表是一样的。这个概念可以简单如下图所示: 而对于SQL转载 2014-11-05 17:20:46 · 539 阅读 · 0 评论 -
SQL Server Profiler使用方法
SQL Server Profiler的中文意思是SQL Server事件探查,一个Sql的监视工具,可以具体到每一行Sql语句,每一次操作,和每一次的连接。感觉这个工具的作用还是很大的,给大家分享一下,对于新手了解Sql语句的写法和提高语句的性能方法有很大的帮助。 SQL Server Profiler使用方法转载 2014-11-13 16:34:34 · 603 阅读 · 0 评论 -
SQL Server中的三种Join方式
1.测试数据准备参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备。这两篇博客使用了相同的实验数据。2.SQL Server中的三种Join方式在Sql Server中,每一个join命令,在内部执行时,都会采用三种更具体的join方式来运行。这三种join的方法是:nested loops j转载 2014-11-24 15:17:54 · 1192 阅读 · 0 评论 -
执行计划
要理解执行计划,怎么也得先理解,那各种各样的名词吧。鉴于自己还不是很了解。本文打算作为只写懂的,不懂的懂了才写。 在开头要先说明,第一次看执行计划要注意,SQL Server的执行计划是从右向左看的。 名词解析: 扫描:逐行遍历数据。 先建立一张表,并给大家看看大概是什么样子的。 CREATE TABLE Person( Id int ID转载 2014-11-25 17:55:20 · 761 阅读 · 0 评论 -
执行计划sql
刚开始用SQL Server的时候,我没有用显示执行计划来对查询进行分析。我曾经一直认为我递交的SQL查 询都是最优的,而忽略了查询性能究竟如何,从而对“执行计划”重视不够。在我职业初期,我只要能获取数据就很开心,而不去考虑数据是如何返回的,“执行计 划”对我的查询作了什么工作。我以为SQL Server会自己去处理查询的性能问题的。作为一个刚进入IT行业或者刚学到新技术的软件工程师,在编转载 2014-11-25 17:56:41 · 564 阅读 · 0 评论 -
1.INSERT INTO SELECT语句
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT I转载 2015-01-19 15:59:09 · 626 阅读 · 0 评论 -
通过非聚集索引让select count(*) from 的查询速度提高几十倍、甚至千倍
通过非聚集索引,可以显著提升count(*)查询的性能。有的人可能会说,这个count(*)能用上索引吗,这个count(*)应该是通过表扫描来一个一个的统计,索引有用吗?不错,一般的查询,如果用索引查找,也就是用Index Seek了,查询就会很快。 之所以快,是由于查询所需要访问的数据只占整个表的很小一部分,如果访问的数据多了,那反而不如通过表扫描来转载 2016-10-11 17:35:51 · 1123 阅读 · 0 评论 -
SQLSERVER SQL性能优化
1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当SQLSERVER处理多个表时,会运用排序及合并的方式连接它们, 首先,扫描转载 2014-11-03 16:14:49 · 653 阅读 · 0 评论 -
浅谈sql中的in与not in,exists与not exists的区别
浅谈sql中的in与not in,exists与not exists的区别 1、in和existsin是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists转载 2014-11-03 15:45:00 · 409 阅读 · 0 评论 -
varchar和Nvarchar区别
Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示如果还为了这个纠结,就直接看看后面的解说,做决定吧。一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。 sql server中的varchar和Nvarchar有什么区别? 答:varchar(n)长度为 n转载 2013-03-18 15:10:08 · 440 阅读 · 0 评论 -
sqlserver 索引
什么是索引拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K 。为了加快查找的速度,汉语字(词)典一般都有按拼音、笔画、偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词)。同理,SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度。•转载 2013-03-18 17:06:15 · 553 阅读 · 0 评论 -
sql之left jion,right join,inner join之区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行举例如下:--------------------------------------------表A记录如下:aID aNum1原创 2012-11-12 09:39:39 · 389 阅读 · 0 评论 -
sql语句
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表 1、 查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC wh转载 2013-02-26 09:47:46 · 320 阅读 · 0 评论 -
sql函数
CSDN博客频道“移动开发之我见”主题征文活动 【分享季1】:网友推荐130个经典资源,分享再赠分!SQL Server2005杂谈(3):四个排名函数(row_number、rank、dense_rank和ntile)的比较 转自http://www.cnblogs.com/nokiaguy/archive/2009/02/05/1384860.htm原创 2013-03-09 16:21:17 · 626 阅读 · 0 评论 -
trigger
1.插入操作(Insert) Inserted表有数据,Deleted表无数据 2.删除操作(Delete) Inserted表无数据,Deleted表有数据 3.更新操作(Update) Inserted表有数据(新数据),Deleted表有数据(旧数据) AFTER 触发器在触发它们的语句完成后执行。如果该语句因原创 2013-03-09 16:22:51 · 560 阅读 · 0 评论 -
OUPUT参数返回值
获取存储过程返回值及代码中获取返回值1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识CREATE PROCEDURE [dbo].[nb_order_insert](@o_buyerid int ,@o_id bigint OUTPUT)ASBEGINSET NOCOUNT ON;BEGININSERT INTO原创 2013-03-09 16:23:49 · 762 阅读 · 0 评论 -
SQL Server 批量插入数据的两种方法
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。运行下面的脚本,建立测试数据库和表值参数。[c-sharp] view plai转载 2013-07-12 11:09:27 · 3080 阅读 · 0 评论 -
Union和Union All的区别
假设我们有一个表Student,包括以下字段与数据: [c-sharp] view plaincopydrop table student; create table student ( id int primary key, name nvarchar2(50) not null, score转载 2013-07-12 11:47:43 · 397 阅读 · 0 评论 -
高性能MySQL
目录(?)[+] 温习《高性能MySQL》的复制篇.1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主转载 2016-08-13 20:00:53 · 539 阅读 · 0 评论