zoukankan      html  css  js  c++  java
  • 为什么要将表和索引建立在不同的表空间?

    “Oracle强烈建议,任何一个应用程序的库表至少需要创建两个表空间,其中之一用于存储表数据,而另一个用于存储表索引数据。因为如果将表数据和索引数据放在一起,表数据的I/O操作和索引的I/O操作将产生影响系统性能的I/O竞争,降低系统的响应效率。将表数据和索引数据存放在不同的表空间中(如一个为APP_DATA,另一个为APP_IDX),并在物理层面将这两个表空间的数据文件放在不同的物理磁盘上,就可以避免这种竞争了。”
    上面的这句话是正确的,重点在于这句“并在物理层面将这两个表空间的数据文件放在不同的物理磁盘上”。因为如果是一块磁盘的话,建立两个表空间,因为物理上还是在竞争同一块磁盘,所以没有从根本上解决I/O竞争的问题。另外Oracle提倡这种做法,有两个目的,其一是如果在两个物理磁盘上创建不同的表空间来规避I/O竞争问题,其二更多的是为了管理的方便,这样在导入、导出以及设置备份策略的时候,就可以有选择性的只备份数据部分等。”

    一、数据库中创建索bai引du的优点

    1、创建唯一性索引,保zhi证数据库表中每一行数dao据的唯一性。

    2、加快数据的检索速度,这也是创建索引的最主要的原因。

    3、减少磁盘IO(向字典一样可以直接定位)。

    4、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

    5、加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

    二、数据库中创建索引的缺点

    1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

    2、索引需要占用物理空间,特别是聚集索引,需要较大的空间。

    3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

  • 相关阅读:
    idea 新建maven项目时,避免每次都需要指定自己的maven目录
    springboot2.X版本得@Transactional注解事务不回滚不起作用
    SpringBoot事务注解@Transactional
    #{}, ${}取值区别
    Mybaits多个参数的传递
    Mybaits基本的CURD操作
    mappers:将sql映射注册到全局配置中
    Mybaits配置多个数据库操作sql环境
    为java类起别名
    Mybaits成长之路
  • 原文地址:https://www.cnblogs.com/wobushitiegan/p/13566205.html
Copyright © 2011-2022 走看看