- 浏览: 557404 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (340)
- Spring (4)
- Hibernate (2)
- Linux (34)
- Oracle (145)
- Eclipse (1)
- UML (1)
- HTML&&JAVASCRIPT (11)
- JAVA (33)
- 设计模式 (1)
- 版本控制 (1)
- wrap框架 (3)
- IBATIS (5)
- Ruby (1)
- DWR (1)
- MINA (11)
- JBPM (2)
- 缓存技术 (4)
- 网络 (3)
- 应用服务器 (1)
- GWT (5)
- 杂谈 (2)
- ICE (4)
- XML (2)
- ArcGis (2)
- Flex (8)
- junit单元测试 (1)
- SNMP (1)
- 存储 (1)
- office (1)
- MongoDB (0)
- Greenplum (3)
- 管理点滴 (1)
- C++ (6)
- 网络入门 (3)
- Tomcat (7)
- JMX (0)
- webservice (1)
- Oracle的10046事件 (1)
- Library cache内部机制详解 (1)
- expdp通过dblink来导入 (1)
最新评论
-
yuanliangding:
有没有关于mock的更多知识。
基于mock对象和JUnit框架简化Spring Web组件单元测试 -
saup007:
ssh端口不是22,怎么搞呢?
Greenplum 学习笔记 -
springmvc-freemarker:
java开源项目源码实例下载
Apache上全部JAVA开源项目简介 -
bobbell:
哇塞,你真厉害,整理的非常全面。我是一个java barcod ...
Greenplum 学习笔记 -
wsj55133245513324:
这不是bug,你将日志级别从debug提升到INFO 就好了 ...
Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)
一. 先来看一下创建索引要做哪些操作: 所以,在建大表索引时,可以增大pga,增大temp tablepace,并且用nologging或并行选项。 如: 并行度一般看CPU 个数。当然在CPU 比较空闲的情况下可以多并行几个。对于单CPU 不建议用并行,这样反而会增加创建时间。也可以根据v$session_wait 的资料,做针对性的tuning , 这样可以降低点时间。 补充知识: 查看cpu 信息:more /proc/cpuinfo 查看内存信息:more /proc/meminfo 查看操作系统信息:more /etc/issue 有关索引概念性的东西,请参考我的Blog: Oracle 索引 详解 http://blog.csdn.net/tianlesoftware/archive/2010/03/05/5347098.aspx 二. 测试 自己也测试了下。测试环境:Oracle 11g R2, win7 64bit ,CPU T6670 2.2G 双核, 内存:4G。 1. 查看表的数据量: SQL> select count(*) from custaddr; COUNT(*) ---------- 7230464 2. 查看现有索引: SQL> select index_name,index_type from user_indexes where table_name='CUSTADDR'; INDEX_NAME INDEX_TYPE ------------------------------ --------------------------- PK_CUSTADDR_TP_723 NORMAL IX_CUSTADDR_ADDRABB_TP NORMAL IX_CUSTADDR_TEAMID_TP NORMAL IX_CUSTADDR_CUSTID_TP NORMAL IX_CUSTADDR_COMPABB_TP NORMAL IX_CUSTADDR_AREACODE NORMAL IX_CUSTADDR_ADDR_TP NORMAL 已选择7行。 3. 删除索引:IX_CUSTADDR_CUSTID_TP 索引已删除。 4. 默认方式创建索引: SQL> CREATE INDEX IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ); 索引已创建。 已用时间: 00: 00: 48.37 单位:s 5. 用nologging 模式: 索引已删除。 已用时间: 00: 00: 00.09 索引已创建。 已用时间: 00: 00: 34.46 6. Nologging+ parallel 模式 SQL> drop index IX_CUSTADDR_CUSTID_TP ; 索引已删除。 已用时间: 00: 00: 00.17 SQL> CREATE INDEX IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ) NOLOGGING PARALLEL 2; 索引已创建。 已用时间: 00: 00: 52.56 SQL> drop index IX_CUSTADDR_CUSTID_TP ; 索引已删除。 已用时间: 00: 00: 00.07 SQL> CREATE INDEX IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ) NOLOGGING PARALLEL 4; 索引已创建。 已用时间: 00: 00: 53.44 看来在单CPU上,并行效果还不好. 7. Parallel 模式 SQL> drop index IX_CUSTADDR_CUSTID_TP ; 索引已删除。 已用时间: 00: 00: 00.02 SQL> CREATE INDEX IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ) PARALLEL 2; 索引已创建。 已用时间: 00: 00: 49.97 SQL> drop index IX_CUSTADDR_CUSTID_TP ; 索引已删除。 已用时间: 00: 00: 00.02 SQL> CREATE INDEX IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ) PARALLEL 4; 索引已创建。 已用时间: 00: 00: 50.25 从上面的测试数据可以看出,700万的数据,建索引,也在1分钟以内。 但是并行在单CPU上效果不明显,而且比光使用NOLOGGING还要慢,因为出现资源争用了,可能是CPU的争用,也可能是I/O的争用。 ------------------------------------------------------------------------------ Blog: http://blog.csdn.net/tianlesoftware 网上资源: http://tianlesoftware.download.csdn.net 相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx DBA1 群:62697716(满); DBA2 群:62697977
1. 把index key的data 读到内存
==>如果data 没在db_cache 中,这时候很容易有大量的db file scatter read wait
2. 对index key的data 作排序
==>sort_area_size 或者pga_aggregate_target 不够大的情况下,需要做 disk sort, 会有大量的driect path read/write , 另外,消耗大量CPU Time
3. 创建新的index segment , 把排过序的index data 写到所创建的index segment 里面
==>如果index 很大,那么,有时也会有redo log 相关等待,如:
log buffer space ,log file sync , log file parallel write 等
create index idx_logs on logs(time) nologging parallel 4;
SQL> drop index IX_CUSTADDR_CUSTID_TP ;
SQL> SET timing on;
SQL> drop index IX_CUSTADDR_CUSTID_TP ;
SQL> CREATE INDEX IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ) NOLOGGING;
发表评论
-
expdp通过dblink来导入
2011-12-14 15:01 1789create.sql: spo create.log rem ... -
Library cache内部机制详解
2011-12-14 14:55 891Library cache内部机制详解 http://www ... -
Oracle的10046事件
2011-12-14 14:53 2098Oracle的10046事件,可以跟踪应用程序所执行的SQL语 ... -
REDO LOG MEMBER STATUS 和 REDO LOG GROUP STATUS
2011-12-14 14:51 928V$LOG 中列出的是REDO LOG GROUP STA ... -
oracle的exp/imp使用方法学习(转)
2011-08-30 08:54 964exp/imp两个命令可以说是oracle中最常用的命令了 ... -
oracle几个awr报告
2011-08-09 14:25 900工作中,碰到的数据库慢的几个awr报告 -
Oracle Profile 使用详解
2011-06-21 14:41 972一、目的: Oracle系统中的profile可以用来对 ... -
ORA-27013
2011-04-13 14:25 1515很新的一个bug,看下你的 memory_target是不是& ... -
ACLE表连接方式分析及常见用法
2011-03-23 09:14 1113摘要: 针对在数据仓库 ... -
ORACLE 外部表应用
2011-03-09 14:58 1068SQL> create or replace direc ... -
How to convert a 32-bit database to 64-bit database on Linux
2011-02-18 14:09 1215How to convert a 32-bit databas ... -
expdp impdp 数据库导入导出命令详解
2011-02-16 09:10 1955一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最 ... -
Oracle手工解/锁表
2011-01-25 14:15 2506手工锁表:lock table tbl_t1 in row ... -
oracle动态性能视图
2011-01-22 10:47 861Oracle动态性能视图个人整理 -
RBO规则介绍
2011-01-17 16:45 1075•无条件使用索引•使用内置的优先级别决定访问路径•比较难以 ... -
关于排序、sort_area_size、临时表空间
2011-01-13 15:30 1118简单陈述一下:针对每 ... -
表之间的连接
2011-01-13 10:42 797Join是一种试图将两个表结合在一起的谓词,一次只能连接2 ... -
重建索引的条件
2011-01-12 16:43 954如果索引存在碎片,那每个索引数据块上的索引数据就更少,会导致我 ... -
TKPROF使用学习
2011-01-10 17:38 724Tkprof工具可用来格式化sql trace产生的文件, ... -
利用USE_INDIRECT_DATA_BUFFERS突破32位的2G内存限制
2011-01-09 09:35 1612对于绝大部分32位系统上的32位数据库,内存最大的设置都不能超 ...
相关推荐
"数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面...
Oracle 在线创建索引和重组索引是数据库管理员经常需要处理的问题。在线创建索引可以提高查询性能,而重组索引可以减少索引的碎片化和空间浪费。下面我们将详细介绍在线创建索引和重组索引的步骤和注意事项。 一、...
#### 二、创建索引前的准备工作 在创建索引之前,了解表的基本结构和特性是非常重要的。这有助于确定最佳的索引策略。 ##### 1. 查看表是否为分区表及其分区详情 首先,需要确认表是否被分区,以及具体的分区情况。...
在Oracle数据库管理系统中,创建表和唯一索引是数据库设计中的关键步骤,它们对于数据的组织、查询效率和数据完整性至关重要。以下将详细介绍如何创建学员信息表,创建唯一索引,以及如何修改表来添加主键和检查约束...
因此,在设计数据库时,应谨慎选择需要创建索引的列,通常选择在查询中频繁作为WHERE子句条件的列。 在大数据量的场景下,索引的维护成本会增加,但其带来的查询性能提升往往抵消了这一成本。索引类型的选择也非常...
### Oracle 创建索引的基本规则 在Oracle数据库管理中,创建合适的索引对于提高查询效率、减少数据处理时间具有重要作用。本文将围绕Oracle创建索引的基本规则进行深入探讨,旨在帮助读者更好地理解如何根据不同的...
"Oracle 海量数据中提升创建索引的速度" Oracle 海量数据中提升创建索引的速度是指在 Oracle 数据库中,特别是在海量数据的情况下,如何提高创建索引的速度。创建索引是数据库优化中的重要步骤,但是在海量数据的...
通过创建索引,可以显著提升查询性能,尤其是在处理大型数据表时更为明显。索引类似于书籍中的目录,能够帮助数据库快速定位到所需的数据行。 #### 二、创建索引 根据提供的描述,创建索引的具体命令为: ```sql ...
为了理解如何优化创建索引的过程,首先需要了解Oracle创建索引时涉及的主要I/O操作: 1. **RA**:对源表加X类型的表级DDL锁。 2. **RB**:读取源表数据块的I/O。 3. **RC**:索引键排序,如果内存中无法容纳所有的...
Oracle 中创建空间索引的实现步骤和注意事项 空间索引是 Oracle 中的一种特殊索引类型,用于加速空间数据的查询和检索。空间索引可以大大提高空间数据的查询效率,特别是在处理大量空间数据时。本文将详细介绍如何...
oracle创建索引很好的参考资料,好的索引能够非常大的提高数据库的查询速度
Oracle索引的创建、简介、技巧,希望可以给学习Oracle的人带来帮助!
2. **创建索引**:索引用于提高数据查询的效率。Oracle支持B树索引、位图索引等多种类型。例如,为EmployeeID创建索引: ```sql CREATE INDEX idx_employee_id ON Employees(EmployeeID); ``` 这条语句创建了一...
标题中的“postgresql和oracle创建空间索引”涉及的是在两种主流的关系型数据库管理系统(RDBMS)中,如何为地理空间数据创建索引的技术。在处理包含地理信息的数据时,如地图坐标、地理位置等,空间索引能显著提高...
综上所述,Oracle数据库的索引创建是一个涉及多个方面的工作,需要综合考虑数据量、查询模式、空间利用率等因素,以确保系统的高效运行。在实际操作中,根据具体业务需求,合理创建和管理索引是提升数据库性能的关键...
创建索引时,需要指定索引的名称、所在表空间、存储空间、initial extent、next extent、pctincrease等参数。 例如,创建一个主键索引: ```sql CREATE TABLE insured_autos ( policy_id NUMBER, vin VARCHAR2(40...
- **函数索引(Function-Based Index)**: 允许基于函数的结果创建索引,使得对函数结果的查询能利用索引。 - **唯一索引(Unique Index)**: 确保索引键的唯一性,与唯一约束相似,但不强制非空。 - **分区索引...
然而,创建索引并非简单的操作,而是一项需要深入理解和精心规划的工作。正如文档标题“Oracle创建索引要做到三个适当”所强调的,创建索引需要遵循“适当”的原则,具体包括在适当的表上、适当的列上创建适当数量的...
##### 创建索引的一般语法如下: ```sql CREATE INDEX index_name ON table_name (column_name); ``` 这里假设我们有一个名为`employees`的表,其中包含一个名为`employee_id`的列,我们可以创建一个名为`idx_...
创建索引有多种方式,如使用`CREATE INDEX`语句,例如: ```sql CREATE INDEX idx_employee_name ON employees(last_name); ``` 这将在`employees`表的`last_name`列上创建一个索引,使得按照员工姓氏查找变得高效。...