设为首页 收藏本站
查看: 1259|回复: 0

[经验分享] oracle 优化--索引

[复制链接]

尚未签到

发表于 2018-9-6 13:30:36 | 显示全部楼层 |阅读模式
  一、事务
  1、简介
  事务是数据处理的核心,是业务上的一个逻辑单元,它能够保证其中对数据所有的操作,要么全部成功,要么全部失败。DBMS通过事务的管理来协调用户的并发行为,减少用户访问资源的冲突。
DSC0000.png

  1)显示提交:当事务遇到COMMIT指令时,将结束事务并永久保存所有的更改的数据。
  2)显示回滚:当事务遇到ROLLBACK指令时,也将结束事务的执行,但是此时它回滚所有更改的数据到事务开始时的原始值,即取消更改,数据没有变化。
  3)DDL语句:一旦用户执行了DDL(数据定义语言,如create,drop等)语句,则之前的所有DML(数据操作语言)操作作为一个事务提交,这种提交称为隐示提交。
  4)正常结束程序:如果oracle数据库应用程序正常结束,如使用sqlplus工具更改了数据,而正常退出该程序(exit),则oracle自动提交事务。
  5)非正常地结束程序:当程序崩溃或意外终止时,所有数据更改都被回滚,这种回滚成为隐示回滚。
  2、事务的特点
  事务有4个特性,简写为ACID特性。
  1)原则性:以转账操作为例,转出账户余额减少和转入余额增加是两个DML语句,但是必须作为一个不可分割的完整操作。要么同时成功,要么同时失败,只转出而没有转入显然是不可接受的。
  2)一致性:无论是在事务前、事务中、事务后,数据库始终处于一致的状态。例如:转账前分别是2000和1000,总金额是3000,转账300后分别是1700和1300,总金额还是3000.这就叫做一致性。不一致就是在某个时间点查询到的总金额不是3000.
  3)隔离性:在某个时间段,肯定有很多人都在转账,每个人的转账都是在自己的事务中,所以在一个数据库中,会有很多事物同时存在。虽然同时存在很多事物,但是事物之间不会相互影响。
  4)持久性:如果事物提交成功,则数据修改永远生效,如果是回滚,则数据完全没有没修改,就相当于没有这件事情发生。
  二、索引
  1.索引是oracle的一个对象,是与表关联的可选结构,提供了一种快速访问数据的途径,提高了数据库检索性能。索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需要的数据。就像书的目录,可以通过目录快速查找所需信
  息,无需阅读整本书。
  2.、索引的分类
  1)B树索引结构
  4、创建索引的语法
  create [unique] index 索引名称 on 表名(列名)[tablespace 表空间名称]
  解释:
  [unique]用于指定唯一索引,默认情况下为非唯一索引
  [tablespace]为索引指定表空间
  1)创建标准索引
  SQL> CREATE INDEX index_name ON tablename(columnname)
  TABLESPACE index_tbs;
  2)重建索引

  SQL>>  合并索引碎片
  SQL>ALTER INDEX index_name COALESCE;
  3)删除索引
  SQL> DROP INDEX index_name;
  例1:
  1)在雇员表(emp)中,为雇员名称(ename)列创建b树索引。
DSC0001.png

  5、创建唯一索
  n 确保在定义索引的列中没有重复值
  n Oracle 自动在表的主键列上创建唯一索引
  n 使用CREATE UNIQUE INDEX语句创建唯一索引
  语法如下:
  SQL> CREATE UNIQUE INDEX index_name
  ON tablename(columnname);
  例:在薪水级别(salgrade)表中,为级别编号grade列创建唯一索引。
DSC0002.png

  6、反向键索引
  与常规B树索引相反,反向键索引在保持列顺序的同时反转索引列的字节。反向键索引通过反转索引键的数据值,使得索引的修改平均分布到整个索引树上。主要应用于所多个实例同时访问一个数据库的场景中
  6、位图索引
  位图索引适合低于基数的列,即该列的值是有限的几个。例如:雇员表中的工种(job)列,即便是几百万条雇员记录,工种也是有限的。Job列可以作为位图索引,类似的还有图书表中的图书类别列等。
DSC0003.png

  位图索引不直接存储ROWID,而是存储字节位到ROWID的映射,减少响应时间,节省空间占用。位图索引不应当在频发发生insert、update、delete操作的表上使用,这是因为单个位图索引指向表的很多数据行,当修改索引项时需要将其指向的数据行全部锁定,这会严重降低数据库的并发处理能力。位图索引适合用于数据仓库和决策支持系统中
  例:在雇员emp表中,为工种(job)列创建位图索引。
  基本语法:
  CREATE BITMAP  INDEX emp_job_bit_idx ON emp(job);
DSC0004.png

  6、组合索引
  类似sqlserver的复合索引,在表内多列上创建索引。索引中的列不必与表中的列顺序一致,也不必相互邻接。
  6、基于函数的索引
  需要创建的索引需要使用表中一列或多列的函数或表达式,也可以将基于函数的索引创建为B树索引或位图索引。
  基本语法:
  SQL> CREATE INDEX emp_ename_upper_idx
  ON tablename (UPPER(columnname));
  :在雇员(emp)表中,为雇员名称(ename)列创建小写函数索引
DSC0005.png

DSC0006.png

  6、创建索引的原则
  n 频繁搜索的列可以作为索引列
  n 经常排序,分组的列可以作为索引
  n 经常用作连接的列(主键/外键)可以作为索引
  n 将索引放在一个单独的表空间中,不要放在有回退段、临时段和表的表空间中
  n 对于大型索引而言,考虑使用NOLOGIN子句创建大型索引。
  n 根据业务数据发生频率,定期重新生成或重新组织索引,进行碎片整理。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-564124-1-1.html 上篇帖子: oracle AWR性能监控报告生成方法 下篇帖子: oracle 10g real application clusters introduction (RAC原理)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表