广告
返回顶部
首页 > 资讯 > 数据库 >create index和create index online的区别是什么
  • 381
分享到

create index和create index online的区别是什么

2024-04-02 19:04:59 381人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关create index和create index online的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。cre

今天就跟大家聊聊有关create index和create index online的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

create index/create index online

此实例需要3个会话,会话1创建索引,会话2修改索引键字段的值,会话3查看的情况。

创建测试表

  1. create table t_test

  2. (

  3.   col1 number,

  4.   col2 number

  5. );


造测试数据(根据自己机器具体情况估计需要的数据量,使创建索引的时间大概在20-30秒

  1. insert into t_test

  2. select rownum col1, rownum col2 from dual

  3. connect by rownum<10000000;

  4. commit;


create index

会话1:

  1. sql> set time on

  2. 10:22:01 SQL> set timing on

  3. 10:22:02 SQL>


  4. --获取 会话1 sid

  5. 10:22:04 SQL> select sid from v$mystat where rownum=1;


  6.        SID

  7. ----------

  8.        144


  9. Elapsed: 00:00:00.01


会话2:

  1. SQL> set time on

  2. 10:22:06 SQL> set timing on

  3. 10:22:06 SQL>


  4. --获取 会话2 sid

  5. 10:22:06 SQL> select sid from v$mystat where rownum=1;


  6.        SID

  7. ----------

  8.        147


  9. Elapsed: 00:00:00.01


会话3:

  1. SQL> set time on

  2. 10:22:11 SQL> set timing on

  3. 10:22:11 SQL>


  4. --格式化输出

  5. 10:22:13 SQL> set line 200

  6. 10:23:03 SQL> col addr for a10

  7. 10:23:03 SQL> col kaddr for a10

  8. 10:23:03 SQL> col sid for 999999

  9. 10:23:03 SQL> col type for a10

  10. 10:23:03 SQL> col id1 for 99999999999

  11. 10:23:03 SQL> col id2 for 99999999999

  12. 10:23:03 SQL> col lmod for 99

  13. 10:23:03 SQL> col request for 99

  14. 10:23:03 SQL> col ctime for 999999

  15. 10:23:03 SQL> col block for 99

  16. 10:23:03 SQL> col table_name for a30

  17. 10:23:03 SQL>


会话1:

  1. --创建索引,不使用online(因为要在 会话2、会话3 中做其它操作,所以表中数据要量要足够大)

  2. 10:25:08 SQL> create index ix_test_col1 on t_test(col1);


  3. Index created.


  4. Elapsed: 00:00:59.73


会话2:

  1. --修改指定行的索引字段,此时update语句会hang住,等待索引创建,从会话3 中的锁的情况可以看到 会话2 在等待 会话1

  2. 10:25:04 SQL> update t_test set col1=102400 where col2=102400;


  3. 1 row updated.


  4. Elapsed: 00:01:02.63


会话3:

  1. --查看此时锁的情况

  2. 10:24:29 SQL> select a.*, decode(a.type, \'TM\', b.object_name) table_name

  3. 10:24:32   2 from v$lock a, dba_objects b

  4. 10:24:32   3 where a.id1=b.object_id(+)

  5. 10:24:32   4 and a.sid in(144, 147);


  6. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  7. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  8. 315C65FC   315C6614   144     TM         18           0            3          0       1       0     OBJ$

  9. 315C66A8   315C66C0   147     TM         5180637      0            0          3       0       0     T_TEST

  10. 315C6550   315C6568   144     TM         5180637      0            4          0       3       1     T_TEST

  11. 3203444C   32034460   144     DL         5180637      0            3          0       3       0

  12. 32034394   320343A8   144     DL         5180637      0            3          0       3       0

  13. 31627F54   31627F78   144     TX         655384       57423        6          0       3       0


  14. 6 rows selected.


  15. Elapsed: 00:00:02.12

  16. 10:25:52 SQL>/


  17. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  18. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  19. 315C5A88   315C5AD0   144     TS         6            23571        6          0       18      0

  20. 315C65FC   315C6614   144     TM         18           0            3          0       35      0     OBJ$

  21. 315C66A8   315C66C0   147     TM         5180637      0            0          3       34      0     T_TEST

  22. 315C6550   315C6568   144     TM         5180637      0            4          0       37      1     T_TEST

  23. 3203444C   32034460   144     DL         5180637      0            3          0       37      0

  24. 32034394   320343A8   144     DL         5180637      0            3          0       37      0

  25. 31627F54   31627F78   144     TX         655384       57423        6          0       37      0


  26. 7 rows selected.


  27. Elapsed: 00:00:00.39

  28. 10:26:16 SQL>/


  29. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  30. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  31. 32034394   320343A8   147     CU         754675352    0            6          0       0       0


  32. Elapsed: 00:00:00.21

  33. 10:26:20 SQL>/


  34. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  35. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  36. 315C6550   315C6568   147     TM         5180637      0            3          0       4       0     T_TEST

  37. 31616060   31616084   147     TX         393221       56619        6          0       4       0


  38. Elapsed: 00:00:00.77


会话2:

  1. --回滚修改

  2. 10:26:21 SQL> rollback;


  3. Rollback complete.


  4. Elapsed: 00:00:00.01


会话3:

  1. 10:26:26 SQL> /


  2. no rows selected


  3. Elapsed: 00:00:00.03

  4. 10:26:36 SQL> /


  5. no rows selected


  6. Elapsed: 00:00:00.01


create index online

会话1:

  1. --删除索引,并加online选项重建

  2. 10:26:46 SQL> drop index ix_test_col1;


  3. Index dropped.


  4. Elapsed: 00:00:00.35

  5. 10:26:59 SQL> create index ix_test_col1 on t_test(col1) online;


  6. Index created.


  7. Elapsed: 00:02:47.07


会话2:

  1. --修改指定行的索引字段,此时update不会待索引创建,而是很快结束

  2. 10:26:50 SQL> update t_test set col1=102400 where col2=102400;


  3. 1 row updated.


  4. Elapsed: 00:00:09.21


会话3:

  1. --查看锁的情况

  2. 10:26:53 SQL> /


  3. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  4. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  5. 315C66A8   315C66C0   147     TM         5180637      0            3          0       0       0     T_TEST

  6. 315C6550   315C6568   144     TM         5180637      0            2          0       1       0     T_TEST

  7. 3203444C   32034460   144     DL         5180637      0            3          0       2       0

  8. 32034394   320343A8   144     DL         5180637      0            3          0       2       0

  9. 315C65FC   315C6614   144     TM         5180671      0            4          0       1       0     SYS_JOURNAL_5180670

  10. 31627F54   31627F78   144     TX         327692       57125        6          0       2       0


  11. 6 rows selected.


  12. Elapsed: 00:00:02.49

  13. 10:27:26 SQL>/


  14. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  15. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  16. 315C66A8   315C66C0   147     TM         5180637      0            3          0       6       0     T_TEST

  17. 315C6550   315C6568   144     TM         5180637      0            2          0       7       0     T_TEST

  18. 3203444C   32034460   144     DL         5180637      0            3          0       8       0

  19. 32034394   320343A8   144     DL         5180637      0            3          0       8       0

  20. 315C65FC   315C6614   144     TM         5180671      0            4          0       7       0     SYS_JOURNAL_5180670

  21. 31627F54   31627F78   144     TX         327692       57125        6          0       8       0

  22. 31616060   31616084   147     TX         655370       57432        6          0       6       0


  23. 7 rows selected.


  24. Elapsed: 00:00:02.16

  25. 10:27:38 SQL>/


  26. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  27. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  28. 315C5A88   315C5AD0   144     TS         6            23579        6          0       3       0

  29. 315C66A8   315C66C0   147     TM         5180637      0            3          0       19      0     T_TEST

  30. 315C6550   315C6568   144     TM         5180637      0            2          0       20      0     T_TEST

  31. 3203444C   32034460   144     DL         5180637      0            3          0       21      0

  32. 32034394   320343A8   144     DL         5180637      0            3          0       21      0

  33. 315C65FC   315C6614   144     TM         5180671      0            4          0       20      0     SYS_JOURNAL_5180670

  34. 31627F54   31627F78   144     TX         327692       57125        6          0       21      0

  35. 31616060   31616084   147     TX         655370       57432        6          0       19      0


  36. 8 rows selected.


  37. Elapsed: 00:00:00.17

  38. 10:28:29 SQL>/


  39. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  40. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  41. 315C5A88   315C5AD0   144     TS         6            23579        6          0       52      0

  42. 315C66A8   315C66C0   147     TM         5180637      0            3          0       68      1     T_TEST

  43. 315C6550   315C6568   144     TM         5180637      0            2          4       69      0     T_TEST

  44. 3203444C   32034460   144     DL         5180637      0            3          0       70      0

  45. 32034394   320343A8   144     DL         5180637      0            3          0       70      0

  46. 315C65FC   315C6614   144     TM         5180671      0            4          0       69      0     SYS_JOURNAL_5180670

  47. 31627F54   31627F78   144     TX         327692       57125        6          0       70      0

  48. 31616060   31616084   147     TX         655370       57432        6          0       68      0


  49. 8 rows selected.


  50. Elapsed: 00:00:00.14


  51. --从锁的情况中看到创建索引过程中出现了表SYS_JOURNAL_5180670,查看表的相关信息

  52. 10:28:52 SQL> col partitioned for a20

  53. 10:29:02 SQL> col temporary for a20

  54. 10:29:08 SQL> select table_name, iot_type, partitioned, temporary from user_tables where table_name=\'SYS_JOURNAL_5180670\';


  55. TABLE_NAME                     IOT_TYPE     PARTITIONED          TEMPORARY

  56. ------------------------------ ------------ -------------------- --------------------

  57. SYS_JOURNAL_5180670            IOT          NO                   N


  58. Elapsed: 00:00:00.00

  59. 10:29:10 SQL> set line 100

  60. 10:29:15 SQL> desc SYS_JOURNAL_5180670

  61.  Name                                                  Null?    Type

  62.  ----------------------------------------------------- -------- ------------------------------------

  63.  C0                                                    NOT NULL NUMBER

  64.  OPCODE                                                         CHAR(1)

  65.  PARTNO                                                         NUMBER

  66.  RID                                                   NOT NULL ROWID


  67. 10:29:19 SQL> set line 200

  68. 10:29:37 SQL> select a.*, decode(a.type, \'TM\', b.object_name) table_name

  69. 10:29:48   2 from v$lock a, dba_objects b

  70. 10:29:48   3 where a.id1=b.object_id(+)

  71. 10:29:48   4 and a.sid in(144, 147);


  72. ADDR       KADDR      SID     TYPE       ID1          ID2          LMODE      REQUEST   CTIME   BLOCK TABLE_NAME

  73. ---------- ---------- ------- ---------- ------------ ------------ ---------- ------- ------- ----- ------------------------------

  74. 315C5A88   315C5AD0   144     TS         6            23579        6          0       132     0

  75. 315C66A8   315C66C0   147     TM         5180637      0            3          0       148     1     T_TEST

  76. 315C6550   315C6568   144     TM         5180637      0            2          4       149     0     T_TEST

  77. 3203444C   32034460   144     DL         5180637      0            3          0       150     0

  78. 32034394   320343A8   144     DL         5180637      0            3          0       150     0

  79. 315C65FC   315C6614   144     TM         5180671      0            4          0       149     0     SYS_JOURNAL_5180670

  80. 31627F54   31627F78   144     TX         327692       57125        6          0       150     0

  81. 31616060   31616084   147     TX         655370       57432        6          0       148     0


  82. 8 rows selected.


  83. Elapsed: 00:00:00.13


会话2:

  1. --回滚update

  2. 10:27:28 SQL> rollback;


  3. Rollback complete.


  4. Elapsed: 00:00:00.01

  5. 10:30:04 SQL>


会话3:

  1. --查看锁的情况,没有记录,索引创建已结束

  2. 10:29:52 SQL> /


  3. no rows selected


  4. Elapsed: 00:00:00.08

  5. 10:30:07 SQL> /


  6. no rows selected


  7. Elapsed: 00:00:00.01


结论:
1.create index 会阻塞其它会话修改索引字段,直到索引创建结束;
2.create index online 允许其它会话修改索引字段,但如果修改索引字段的会话没有commit或是rollbak,则索引创建会被阻塞;
3.online创建索引时会临时创建一个IOT的表,索引创建结束后删除IOT表(IOT表的使用方法暂时还不清楚)

看完上述内容,你们对create index和create index online的区别是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: create index和create index online的区别是什么

本文链接: https://www.lsjlt.com/news/65737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • create index和create index online的区别是什么
    今天就跟大家聊聊有关create index和create index online的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。cre...
    99+
    2022-10-19
  • oracle index unique scan/index range scan和mysql range/const/ref/eq_ref的区别是什么
    这篇文章将为大家详细讲解有关oracle index unique scan/index range scan和mysql range/const/ref/eq_ref的区别是什么,文章内容质量较高,因此小...
    99+
    2022-10-18
  • ./ 和 sh 的区别是什么
    ./ 和 sh 的区别是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。./ 和 sh的使用区别使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限;使用“sh”...
    99+
    2023-06-09
  • php === 和==的区别是什么
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php === 和==的区别是什么?php中的==和===的用法及区别在开发中进场遇到数值匹配的问题,那么在进行匹配时,遇到下面的情况,你觉得结果是什么?<php ...
    99+
    2021-03-17
    php
  • vuejs和angularjs的区别是什么
    这篇文章主要介绍“vuejs和angularjs的区别是什么”,在日常操作中,相信很多人在vuejs和angularjs的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • vuejs和php的区别是什么
    这篇文章将为大家详细讲解有关vuejs和php的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。vuejs和php的区别:1、Vue是一套JavaS...
    99+
    2022-10-19
  • Python和Java的区别是什么
    这篇文章给大家介绍Python和Java的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅。其实Jav...
    99+
    2022-10-19
  • Cache 和 Buffer 的区别是什么
    这篇文章主要为大家分析了Cache 和 Buffer 的区别是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Cache 和 Buffer 的区别是什么”...
    99+
    2023-06-04
  • .bash_profile和.bashrc的区别是什么
    本篇文章给大家分享的是有关.bash_profile和.bashrc的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 /etc/profile:此文件为系统...
    99+
    2023-06-06
  • Centos和Redhat的区别是什么
    这篇文章主要介绍了Centos和Redhat的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CentOS的简介  CentOS是Community ENTerpri...
    99+
    2023-06-10
  • javascript和SQL的区别是什么
    本篇文章和大家了解一下javascript和SQL的区别是什么。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。区别:JavaScript是一种基于原型编程、多范式的动态脚本语言,常用来为网页添加各式各样的动态功能,为用户提...
    99+
    2023-06-14
  • BLOCKED和WAITING的区别是什么
    本篇内容主要讲解“ BLOCKED和WAITING的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ BLOCKED和WAITING的区别是什么”吧!BLOCKED 和 WAITING ...
    99+
    2023-06-15
  • ps2020和cs6的区别是什么
    这篇文章给大家分享的是有关ps2020和cs6的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。AdobePhotoshop,简称PS,是AdobeSystems开发发行的图像处理软件。Photoshop...
    99+
    2023-06-20
  • Servlet中/和/*的区别是什么
    这篇文章主要讲解了“Servlet中/和demo:这个urlPatterns是合法的。只不过它属于精确匹配,也就是说别看它中间有*,仍旧有且仅能匹配/api/*/demo这个请求路径匹配顺序有时候一个URL会被多个urlPatterns所匹...
    99+
    2023-06-20
  • Spring和SpringBoot的区别是什么
    今天小编给大家分享一下Spring和SpringBoot的区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、看一下...
    99+
    2023-06-27
  • window7和window10的区别是什么
    这篇“window7和window10的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“window7和window...
    99+
    2023-07-01
  • Mysql8和mysql5.7的区别是什么
    本篇内容介绍了“Mysql8和mysql5.7的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.NoSql存储Mysql从5.7...
    99+
    2023-06-29
  • office365和wps的区别是什么
    这篇文章主要讲解了“office365和wps的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“office365和wps的区别是什么”吧!office365和wps的区别:1、更新...
    99+
    2023-06-30
  • 堆和栈的区别是什么
    堆和栈的区别是:1、栈是一种线性数据结构,而堆则是一种树状的数据结构;2、栈的内存分配方式是自动的,而堆的内存分配与释放需要手动管理;3、栈的内存分配速度相对较快,而堆的内存分配速度较慢;4、栈的大小是固定的,而堆的大小可以根据需要进行动态...
    99+
    2023-08-10
  • Java和JavaScript的区别是什么?
    Java和JavaScript是两种不同的编程语言,它们虽然名称相似,但是却有着很大的区别。在本文中,我们将会详细介绍Java和JavaScript之间的区别。 历史背景 Java是由Sun Microsystems公司于1995年推出...
    99+
    2023-09-10
    unix 分布式 javascript
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作