返回顶部
首页 > 资讯 > 数据库 >Oracle索引和事务
  • 698
分享到

Oracle索引和事务

Oracle索引和事务 2015-04-02 16:04:27 698人浏览 绘本
摘要

第四章索引和事务   什么是索引?有什么用? 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的目录。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的

Oracle索引和事务

第四章索引和事务

 

什么是索引?有什么用?

1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的目录。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。

  2)索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率

  3)索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表;

  4)索引一旦建立,在表上进行DML操作时(例如在执行插入、修改或者删除相关操作时),oracle会自动管理索引,索引删除,不会对表产生影响

  5)索引对用户是透明的,无论表上是否有索引,sql语句的用法不变

  6)oracle创建主键时会自动在该列上创建索引

 

索引的底层实现原理

         当一列索引创建成功后,oracle系统会这个列复制一个份放入缓存,并按照一定规则做排序和去重,从而减少检索数据的范围。但是索引不是创建的越多越好,因为一个索引的创建,就需要在缓存中开辟一个空间,过多的索引反而会加重数据库的检索速度。

 

索引的设计理念

1)某个字段在条件查询中会被高频率的调用 where 条件

2)表关联的连接字段 on 条件

3)实际业务需求 

 

索引的分类

         1) 唯一索引

                  主键会默认添加索引

         适用:主键

         2)BTREE索引(默认索引)

oracle中最常用的索引;B树索引就是一颗二叉树;叶子节点(双向链表)包含索引列和指向表中每个匹配行的ROWID值

        2.所有叶子节点具有相同的深度,因而不管查询条件怎样,查询速度基本相同

        3.能够适应精确查询、模糊查询和比较查询

      适用:列基数(列不重复值的个数)大时适合使用B树索引

      3)位图索引

            创建位图索引时,oracle会扫描整张表,并为索引列的每个取值建立一个位图(位图中,对表中每一行使用一位(bit,0或者1)来标识该行是否包含该位图的索引列的取值,如果为1,表示对应的rowid所在的记录包含该位图索引列值),最后通过位图索引中的映射函数完成位到行的ROWID的转换

      适用:对于基数小的列适合简历位图索引(例如性别等)

         4)单列索引和复合索引

            如果索引建立在多个列上,只有它的第一个列被where子句引用时,优化器才会使用该索引,即至少要包含组合索引的第一列。即索引按照顺序被调用

 

 

 

索引操作

查看索引

select * from user_indexes  where TABLE_NAME="EMPLOYEES";

创建BTREE索引

CREATE    INDEX      index_name    on    table_name(colum1,colum2…);

创建位图索引

CREATE    BITMAP INDEX      index_name    on    table_name(colum1,colum2…);

 

修改索引

alter index index_name1 rename to index_name2;

 

删除索引

drop index index_sno;

 

索引在全局唯一

 

图形化操作

 

 

 

事务

   事务是操作数据库最小的单位,是1条或N条SQL语句组成的逻辑。

四大特性

   1. 原子性A(Atomic)

      事务是一个整体,不可分割,一起成功or一起失败

   2. 一致性C(Consistency)

      事务执行前和执行后必须处于一致性状态  

   3. 隔离性I(Isolation)

      多事务并发时,相互独立,互不影响

   4. 持久性D(Durability)

      数据库数据若不变更,会永久不变

 

事务会造成的问题

   1. 脏读

   脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据

   2. 不可重复读

   不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。

   3. 幻读

   在读写一批数据时,发现读取到的数据不一致,就是发生了幻觉一样

  以上问题,都是发生在多事务并发时,数据前后不一致造成的

 

     数据库提供的四种隔离级别:

Read uncommitted(读未提交):最低级别,任何情况都会发生。

Read Committed(读已提交):可避免脏读的发生。

Repeatable read(可重复读):可避免脏读、不可重复读的发生。

Serializable(串行化):避免脏读、不可重复读,幻读的发生。

 

Mysql默认级别是 可重复读;

Oracle 仅支持读已提交和串行化,默认级别是 读已提交

 

机制

1. 共享锁/乐观锁(Share Locks,即S锁)加了共享锁的数据对象可以被其他事务读取和修改

2. 排它锁/悲观锁(Exclusive Locks,即X锁):当数据对象被加上排它锁时,其他的事务不能对它读取和修改

 

死锁

1. 两张表T1,T2

2. A用户已访问T1表,并加锁T1表,尝试访问T2表;访问不到T2表,就不撤T1表的锁

3. B用户已访问T2表,并加锁T2表,尝试访问T1表;访问不到T1表,就不撤T2表的锁

4. 两个用户就发生了死锁

 

您可能感兴趣的文档:

--结束END--

本文标题: Oracle索引和事务

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

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

猜你喜欢
  • Oracle索引和事务
    第四章索引和事务   什么是索引?有什么用? 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的目录。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的...
    99+
    2015-04-02
    Oracle索引和事务
  • MySQL数据库索引和事务
    目录1. 索引 1.1 概念 1.2 作用 1.3 索引的原理 1.3.1 减少磁盘的访问次数是构建索引的核心思想 1.3.2 B+ 树适用实现索引的底层 1.4 适用场景 1.5 ...
    99+
    2024-04-02
  • MySQL 索引事务
    目录 1. 索引1.1 概念1.2 索引的使用1.2.1 查看索引1.2.2 创建索引1.2.3 删除索引1.2.4 索引背后的数据结果 2. 事务2.1 概念2.2 事务的特性2....
    99+
    2023-09-16
    mysql 数据库
  • MySQL数据库的索引和事务
    一、前言本文将要详细介绍MySQL索引与事务的概念及原理,并初步了解MySQL数据库视图概念,简述数据库的存储过程。二、索引2.1索引的概念——什么是索引一般来说,一篇论文,或者说一本书,都有其目录,而目录...
    99+
    2024-04-02
  • MySQL的索引与事务
    作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:和我一起学java 语录:Stay hungry stay foolish 给大家推荐一款好用的神器Apifox = Postman + Swagger + Mock + JMeter。集...
    99+
    2023-09-01
    数据库 java mysql
  • MySQL数据库的事务和索引详解
    目录一、事务:事务四大特性:并发事务带来哪些问题?(隔离所导致的一些问题)事务隔离级别有哪些?MySQL的默认隔离级别:二、索引:索引的作用:索引的分类:索引准则:索引的数据结构:总...
    99+
    2024-04-02
  • ApacheDoris的Bitmap索引和BloomFilter索引使用及注意事项
    目录1. Bitmap索引的使用1.1 Bitmap索引介绍1.2 Bitmap索引使用的注意事项1.3 Bitmap索引的使用2. BloomFilter索引2.1 BloomFi...
    99+
    2024-04-02
  • oracle单列索引和组合索引性能测试
    共有两张表t1,t2t1的表结构t2的表结构t1和t2通过insert into t1 values ('www','aaa','bbb');insert into t1 values ('www1','a...
    99+
    2024-04-02
  • oracle使用索引和不使用索引的区别
    小编给大家分享一下oracle使用索引和不使用索引的区别,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!首先准备一张百万条数据的表,这样分析数据差距更形象!下面用分页表数据对表进行分析,根据EM...
    99+
    2024-04-02
  • MySQL索引与事务详解
    MySQL索引与事务详解 一、前言 ​ 上一章我们讲解了MySQL的手工编译安装流程以及相关的数据库操作命令(sql语句),本文将要详细介绍MySQL索引与事务的概念及原理,并初步了解MySQL数据库视...
    99+
    2024-04-02
  • MySQL索引与事务问题
    下一节将会讲到JDBC相关编程, 敬请期待~~~~~  目录 1. 索引 1.1 什么是索引 1.2索引的使用场景 1.3索引相关代价 1.4索引背后的数据结构(B+树) 2.事务 2.1什么是事务 2.2为什么使用...
    99+
    2023-10-02
    mysql
  • Apache Doris的Bitmap索引和BloomFilter索引使用及注意事项
    目录1. Bitmap索引的使用1.1 Bitmap索引介绍1.2 Bitmap索引使用的注意事项1.3 Bitmap索引的使用2. BloomFilter索引22.2 BloomFilter原理2.3 BloomFil...
    99+
    2024-04-02
  • oracle组合索引和单个索引有什么区别
    组合索引是指在表中创建多个列的索引,而单个索引是指只针对一个列创建索引。 区别如下: 组合索引可以通过同时查询多个列来提高查询效率...
    99+
    2024-04-09
    oracle
  • Mysql事务索引知识汇总
    目录一、事务1. 事务特性2. 事务并发时出现的问题二、索引1. 索引使用2. 索引类型3. 索引注意原则三、SQL1. SQL优点2. SQL分类3. SQL语法及关键字 &nbs...
    99+
    2024-04-02
  • MongoDB中连接池、索引、事务
    目录连接池 = 数据库连接的缓存MongoDB查询数据五步走MongoDB连接池的参数配置下面简单说一下MongoDB的索引索引基数是指集合中某个字段有多少个不同的值MongoDB内...
    99+
    2023-01-11
    MongoDB 连接池 MongoDB 索引 MongoDB事务
  • MySQL索引事务详细解析
    目录一、索引 1.概念2.作用3.缺陷4.使用场景5.使用1.查看索引2.创建索引3.删除索引6.案例二、事务1.为什么使用事务2.事务的概念3.使用4.特性一、索引 1.概念 索...
    99+
    2024-04-02
  • 事务隔离级别、锁、索引、存储引擎
    1.隔离级别 1.1未提交读(read uncommit) RU 这是最低级别的隔离等级: 在这种隔离级别下,可以读取未提交的事务修改/更新到的数据,基本无数据库会选择该隔离级别 事务一  select * fro...
    99+
    2021-12-21
    事务隔离级别 索引 存储引擎
  • MySql索引和事务定义到使用全面涵盖
    目录索引是什么索引的使用场景索引的常见操作索引背后的数据结构事务是什么事务的基本特性小结索引是什么 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各...
    99+
    2022-07-28
    MySql索引和事务 MySql索引 MySql事务
  • MySQL数据库索引和事务的作用是什么
    本篇内容主要讲解“MySQL数据库索引和事务的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库索引和事务的作用是什么”吧!1. 索引1.1 概念索引是为了加速对表中数据行...
    99+
    2023-06-22
  • 【MySQL】MySQL索引、事务、用户管理
    20岁的男生穷困潦倒,20岁的女生风华正茂,没有人会一直风华正茂,也没有人会一直穷困潦倒… 文章目录 一、MySQL索引特性(重点)1.磁盘、OS、MySQL,在进行数据IO时三者的关系2.索引的理解3.聚簇索引(索引和数据放在一...
    99+
    2023-08-16
    数据库 mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作