- 浏览: 224195 次
- 来自: ...
文章分类
- 全部博客 (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 1104启动mysql 报错: ERROR 2002 (HY0 ... -
PLSQL 查询不出中文问题
2012-06-14 14:17 2790我的操作系统是英文版的,oracle是中文版的,在PL ... -
inux系统上安装MySQL 5.5prm
2012-06-09 22:47 940http://www.cnblogs.com/sunson/a ... -
mysql优化配置参数
2012-05-31 11:04 912http://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 1083Common Dbutils是操作数据库的组件,对传统操作数据 ... -
Mysql数据库服务器性能配置优化一 -- 硬件配置及优化,RAID优化
2012-05-18 17:46 2159近期公司采购了 ... -
RAID 5 and MySQL is NOT recommended
2012-05-18 17:37 996http://www.razzed.com/2009/01/1 ... -
临时表作用
2012-05-04 15:45 10961.事务处理的中间数据,回滚 2.分析数据中间数据 3.复 ... -
临时表在不同数据库设计中的作用
2012-05-04 15:35 3356在以前数据库 ... -
Oracle Apex
2012-04-30 10:59 811http://wenku.baidu.com/view/f83 ... -
XA Datasource 与 Non-XA Datasource 区别
2012-04-27 14:29 2591An XA transaction, in the mos ... -
JDBC事务和JTA (XA)事务
2012-04-27 14:28 2577事务简介 一般情况下,J2EE应用服务器支持JDBC事务、J ... -
Spring事务的传播行为
2012-04-27 11:34 1039在service类前加上@Transa ... -
什么是事务的传播特性?
2012-04-27 11:33 3482我们都知道事务的概 ... -
数据库事务隔离级别与锁
2012-04-27 11:19 1971数据库事务隔离级别 ... -
索引与散列
2012-04-18 22:30 926http://wenku.baidu.com/view/3c8 ... -
数据库集群技术分析和比较
2012-04-18 22:15 808http://www.51cto.com/art/200607 ... -
数据库优化之:MySQL查询优化
2012-04-18 21:32 1114http://zj86.info/?post=133 ...
相关推荐
- 索引:如何创建、使用和维护索引,以及不同类型的索引(如B树、哈希索引)。 - 查询优化:如何编写高效的SQL查询,避免全表扫描,理解查询执行计划。 - 表分区:分区的作用,如何选择合适的分区策略。 4. ...
本文围绕数据库应用中常见的问题进行了详细的解答,涵盖了数据库的基本概念、节点数据库的特点与优势、数据库系统的构成及其核心功能等多个方面。通过本文的学习,可以帮助读者更好地理解数据库相关知识,并在实际...
NoSQL 数据库可以实现高效的简单查询,但是不具备高度结构化查询等特性,复杂查询的性能不尽人意,而关系数据库借助于索引机制可以实现快速查询。 5.4 NoSQL 的四大类型 ------------------- NoSQL 数据库可以分为...
2. **横向扩展**:当单个数据库实例无法满足需求时,如何进行水平扩展,例如添加更多服务器,构建分布式数据库。 3. **数据迁移**:在不中断服务的前提下,实现数据库的平滑迁移,包括数据复制和同步。 ### 六、高...
8. 数据库管理系统(DBMS):理解不同DBMS的工作原理,比如事务管理、并发控制、恢复机制等。 9. NoSQL与NewSQL:介绍非关系型数据库的灵活性和横向扩展性,以及NewSQL如何在保持高并发性能的同时兼顾ACID特性。 ...
2. 索引设计:为了加快数据的查询速度,互联网数据库需要建立合适的索引机制。例如,建立倒排索引、前缀索引等。 3. 数据缓存:为了减少数据库的访问次数,提高系统性能,互联网数据库采用缓存技术,将经常访问的...
2. NewSQL数据库:保持SQL接口的同时,针对大数据和高并发场景优化,提供高性能和横向扩展能力。 八、数据库发展趋势 1. 大数据处理:利用Hadoop、Spark等工具处理PB级甚至EB级数据。 2. 数据仓库与OLAP:支持在线...
为了提高系统的整体性能,应该将复杂的业务逻辑放在应用服务层执行,这样不仅能够减轻数据库的压力,还能通过增加服务器数量轻松实现性能的横向扩展。 **5. 禁止存储大文件或者大照片** - **解读**:大文件和图片等...
实时数据库在信息技术领域中扮演着至关重要的角色,特别是在工业自动化、物联网(IoT)和大数据分析等场景。紫金桥实时数据库是一款专为处理高速、海量实时数据而设计的高效数据库系统,它能够快速存储、管理和分析...
10. **数据库发展趋势**:可能涵盖了新兴的技术,如NewSQL(兼顾ACID特性和横向扩展能力的新一代数据库)、图形数据库、内存数据库等。 通过【2012中国数据库技术大会】的资料,我们可以深入了解当时的数据库技术...
### MySQL Innodb 索引原理...通过对比不同的树形结构,我们了解到B+树为何成为数据库索引的理想选择。此外,还讨论了InnoDB与MyISAM的主要差异,以及索引的插入和删除操作。对于理解和优化MySQL数据库的性能至关重要。
为了适应不同的应用场景,SophicDB采取了与传统数据库相仿的设计策略,同时又在数据组织和存储方式上进行了创新,实现了类似并行数据库和内存数据库的可扩展性和高性能。SophicDB还提供了一些独特的特性,例如离线...
2. **高性能**:NoSQL数据库采用内存缓存技术和优化的索引机制,能够实现快速读写操作。 3. **灵活的数据模型**:NoSQL数据库允许存储复杂的数据类型,如嵌套对象、数组等,这使得数据模型更加灵活多变。 4. **弱...
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级...
SQL Server是由微软开发的一款关系型数据库管理系统(RDBMS),广泛应用于企业级应用中。它提供了强大的数据存储、处理和分析能力,支持多种数据类型,包括文本、图像等复杂数据格式,并且具备高度可扩展性,能够...
- **高效的查询机制**:采用索引技术、查询优化算法等手段,确保查询的高效执行。 - **支持实时数据分析**:通过快速的数据处理能力,可以实现实时数据流的分析处理,满足现代应用的需求。 #### 架构分析 ##### ...
MySQL 的索引机制也将在文章中被讨论。索引是 MySQL 中的一种机制,旨在提高查询速度。文章将讨论聚集索引、覆盖索引、索引下推等概念。 此外,文章还将讨论 MySQL 的事务机制。事务是 MySQL 中的一种机制,旨在...
阿里巴巴作为全球领先的电商平台,在其发展过程中,数据库技术经历了从PC服务器到小型机、从集中式Oracle数据库到分布式MySQL数据库的重大转变。这一过程伴随着“成长的烦恼”: - **从PC服务器到小型机**:随着...
综上所述,理解MySQL中的索引机制和优化策略是提高数据库性能的关键。通过对索引数据结构的掌握,我们可以更好地设计查询,以实现高效的数据库操作。同时,利用`EXPLAIN`分析执行计划,可以找出性能瓶颈并针对性地...
1. **分散数据、日志和索引**:将这些组件分别放置在不同的 I/O 设备上可以显著提高读取速度。 2. **表的纵向和横向分割**:减少单个表的尺寸有助于提高性能。 3. **硬件升级**:增加 CPU 数量、内存容量等硬件资源...