- 浏览: 219588 次
- 来自: ...
文章分类
- 全部博客 (80)
- 设计架构 (9)
- Javascript,Css (2)
- JVM (7)
- Swing,Applet (1)
- 图像处理 (5)
- Java本地方法 (1)
- 项目管理 (6)
- WEB服务器 (5)
- 数据库 (22)
- linux,unix (2)
- Java collection framework (2)
- safe (0)
- WEB (4)
- HTTP长连接 (1)
- Javascript (6)
- Css (5)
- HTML (1)
- Hibernate (2)
- Spring (0)
- Struts (0)
- NOSQL (0)
- Ibatis (0)
- Core Java (1)
- UI (1)
- dhkchkconfig--- (0)
最新评论
-
ietttt:
楼主方便给个QQ吗?遇到紧急问题想请教楼主。
Java操作visio文档 -
davidtps:
学习了
比较一下ArrayList和LinkedList: -
mousepc:
不错的文章,谢谢!
比较一下ArrayList和LinkedList: -
lliiqiang:
相应的jar包呢
Java操作visio文档 -
pangtao:
分析的很到位,谢谢
比较一下ArrayList和LinkedList:
http://database.51cto.com/art/200903/117477.htm
http://www.cnblogs.com/wq3if2in/archive/2009/04/02/1428068.html
http://wangyuanzju.blogbus.com/logs/35139229.html
http://mlxia.iteye.com/blog/279059
http://www.cnblogs.com/chuncn/archive/2009/04/15/1434385.html
http://cornerxp.iteye.com/blog/977463
http://blog.csdn.net/m1cr0s0ft/article/details/2636563
由于 InnodB 主键采用 聚集索引 ,会对插入的记录进行物理排序,而 UUID本身基本上是无序的,所以造成了巨大的 I/O 开销。所以如果使用 innodB 千万不要使用 UUID 。
我们做数据采集,每天数据将近7kw。就采用了uuid。也没有看到性能能慢到哪里去。
数据库对于pk,会自动创建index。所以,对pk的检索完全走的index。检索的次数和采用number的pk理论应该一样。
区别就是一个是数字的比较,一个是字符串的比较。虽然有字符串的比较比起数字比较来要耗时。但是,大头都在定位pk这头。所以,uuid 虽影响性能,但绝对可以接受。
聚集索引:物理存储按照索引排序
非聚集索引:物理存储不按照索引排序
优势与缺点
聚集索引:插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入)
查询数据比非聚集数据的速度快
汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张” 字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63 页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
通过以上例子,我们可以理解到什么是“聚集索引”和“非聚集索引”。
进一步引申一下,我们可以很容易的理解:每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。得出查询速度的方法是:在各个select语句前加:declare @d datetime
set @d=getdate()
并在select语句后加:
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
1、用聚合索引比用不是聚合索引的主键速度快
2、用聚合索引比用一般的主键作order by时速度快,特别是在小数据量情况下
事实上,如果数据量很小的话,用聚集索引作为排序列要比使用非聚集索引速度快得明显的多;而数据量如果很大的话,如10万以上,则二者的速度差别不明显。
3、使用聚合索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚合索引使用了多少个
4 、日期列不会因为有分秒的输入而减慢查询速度
从publish 表中取出第 n 条到第 m 条的记录:
SELECT TOP m-n+1 *
FROM publish
WHERE (id NOT IN
(SELECT TOP n-1 id
FROM publish))
id 为publish 表的关键字
只所以把“查询优化”和“分页算法”这两个联系不是很大的论题放在一起,就是因为二者都需要一个非常重要的东西――聚集索引。
在前面的讨论中我们已经提到了,聚集索引有两个最大的优势:
1、以最快的速度缩小查询范围。
2、以最快的速度进行字段排序。
第1条多用在查询优化时,而第2条多用在进行分页时的数据排序。
而聚集索引在每个表内又只能建立一个,这使得聚集索引显得更加的重要。聚集索引的挑选可以说是实现“查询优化”和“高效分页”的最关键因素。
但要既使聚集索引列既符合查询列的需要,又符合排序列的需要,这通常是一个矛盾。
聚集索引是如此的重要和珍贵,所以一定要将聚集索引建立在:
1、您最频繁使用的、用以缩小查询范围的字段上;
2、您最频繁使用的、需要排序的字段上。
二)何时使用聚集索引或非聚集索引
下面的表总结了何时使用聚集索引或非聚集索引(很重要)。
动作描述 |
使用聚集索引 |
使用非聚集索引 |
列经常被分组排序 |
应 |
应 |
返回某范围内的数据 |
应 |
不应 |
一个或极少不同值 |
不应 |
不应 |
小数目的不同值 |
应 |
不应 |
大数目的不同值 |
不应 |
应 |
频繁更新的列 |
不应 |
应 |
外键列 |
应 |
应 |
主键列 |
应 |
应 |
频繁修改索引列 |
不应 |
应 |
每个表中只能有一个聚集索引的规则
发表评论
-
Can’t connect to local MySQL server through socket 解决办法
2012-06-14 20:56 1011启动mysql 报错: ERROR 2002 (HY0 ... -
PLSQL 查询不出中文问题
2012-06-14 14:17 2737我的操作系统是英文版的,oracle是中文版的,在PL ... -
inux系统上安装MySQL 5.5prm
2012-06-09 22:47 847http://www.cnblogs.com/sunson/a ... -
mysql优化配置参数
2012-05-31 11:04 860http://www.jb51.net/article/264 ... -
HBase 云计算的分布式数据库
2012-05-21 10:55 0http://wenku.baidu.com/view/524 ... -
hibernate的坏处
2012-05-20 12:48 0我平常做金融类产品居多,深知这个东西的害处。onecan说的对 ... -
Dbutils
2012-05-20 12:19 1045Common Dbutils是操作数据库的组件,对传统操作数据 ... -
Mysql数据库服务器性能配置优化一 -- 硬件配置及优化,RAID优化
2012-05-18 17:46 2076近期公司采购了 ... -
RAID 5 and MySQL is NOT recommended
2012-05-18 17:37 936http://www.razzed.com/2009/01/1 ... -
临时表作用
2012-05-04 15:45 10031.事务处理的中间数据,回滚 2.分析数据中间数据 3.复 ... -
临时表在不同数据库设计中的作用
2012-05-04 15:35 3246在以前数据库 ... -
Oracle Apex
2012-04-30 10:59 752http://wenku.baidu.com/view/f83 ... -
XA Datasource 与 Non-XA Datasource 区别
2012-04-27 14:29 2511An XA transaction, in the mos ... -
JDBC事务和JTA (XA)事务
2012-04-27 14:28 2520事务简介 一般情况下,J2EE应用服务器支持JDBC事务、J ... -
Spring事务的传播行为
2012-04-27 11:34 961在service类前加上@Transa ... -
什么是事务的传播特性?
2012-04-27 11:33 3357我们都知道事务的概 ... -
数据库事务隔离级别与锁
2012-04-27 11:19 1904数据库事务隔离级别 ... -
索引与散列
2012-04-18 22:30 878http://wenku.baidu.com/view/3c8 ... -
数据库集群技术分析和比较
2012-04-18 22:15 759http://www.51cto.com/art/200607 ... -
数据库优化之:MySQL查询优化
2012-04-18 21:32 1069http://zj86.info/?post=133 ...
相关推荐
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级...
2、散列索引与B+树索引相比较有何优缺点? 三、(20分) 设关系r1(A,B,C), r2(C,D,E)有如下特性:r1有20000个元组,r2有45000个元组,一块中可容纳25条r1元组或30条r2元组。使用以下连接策略的每一种计算r1和r2的...
数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫...
2.4数据库管理系统须具备良好的数据和索引的压缩技术,具有 较低的空间膨胀率;在系统硬件资源允许的条件下(如服务 器内存不小于2G),对超大型数据库及结构化/非结构化复杂 查询实现响应的时间能够达到亚秒级,...
1.4 和传统数据库进行比较 1.4.1 读时模式(Schema on Read)vs.写时模式(Schema on Write) 1.4.2 更新、事务和索引 1.5 HiveQL 1.5.1 数据类型 1.5.2 操作和函数 1.6 表 1.6.1 托管表(Managed Tables)和外部表...
修改外部数据库在4.12版中导致的不兼容问题,并增加了对MS SQL Server数据库中image和text字段类型的说明。 7. 修改扩展界面支持库一,禁止透明标签在父窗口刷新时自动刷新,以解决其导致窗口刷新缓冲的问题。 8....
1.4 和传统数据库进行比较 1.4.1 读时模式(Schema on Read)vs.写时模式(Schema onWrite) 1.4.2 更新、事务和索引 1.5 HiveQL 1.5.1 数据类型 1.5.2 操作和函数 1.6 表 1.6.1 托管表(Managed Tables)...
数据库:Mysql(缓存命中、索引、单条SQL性能、数据库线程数、数据池连接数) 中间件:1.消息2、负载均衡3、缓存(包括线程数、连接数、日志)。 网络: 吞吐量、吞吐率 应用: jvm内存、日志、Full GC频率 3、...
容量⼤:Hbase单表可以有百亿⾏、百万列,数据矩阵横向和纵向两个维度所⽀持的数据量级都⾮常具有弹性 2. 列存储:其数据在表中是按照某列存储的,这样在查询只需要少数⼏个字段的时候,能⼤⼤减少读取的数量,可以...
欢迎使用appNG appNG是基于和的Web应用程序平台和Web应用程序框架。 借助appNG,您可以在几分钟之内构建自己的应用程序并将其部署到平台。 appNG非常适合创建和运行自己的应用程序... 支持索引和搜索,由提供支持
MapReduce的伟⼤ 之处在于给⼤众们普及了⼯业界对于⼤数据计算的理解:它提供了良好的横向扩展性和容错处理机制,⾄此⼤数据计算由集中式过渡⾄分布 式。以前,想对更多的数据进⾏计算就要造更快的计算机,⽽现在只...