1. 尽量读内存中的数据
2. 尽量减少IO矛盾, 即多个任务同时读写一块磁盘
表和索引要尽量分开在不同磁盘, 因为表和它的索引是同时读取的, 所以分磁盘后, 对性能会提高.
物理磁盘的调优相关
redo log file 放在最快的磁盘上, data 放在容量大, 速度慢一点也没关系
表和索引是同时读取的,所以表和索引分开磁盘比较好
FTS 就是全表扫描的意思
并不是所有时刻都要避免全表扫描,通常来说需要避免不必要的全表扫描
一次性读取多少块这个参数的设置(DB_FILE_MULTIBLOCK_READ_COUNT),是需要和操作系统配合的,必须在操作系统准许的范围内
是server process 去读这个磁盘的块, 所以可以设置session 级别来设置这个参数, 如果你要设置这个参数, 那么就在操作系统准许的情况下设置最大值.
一般都是 incremental checkpoints 这种情况, 因为 full checkpoint 很费时, 这样虽然是提高了效率, 但是这个有个问题就是如果数据库出现问题, 那么recovery 时就要费更多时间. 那么这种情况是一般DBWn 会慢慢的或者数据库空闲时将实际数据写到磁盘上.
ALTER SYSTEM CHECKPOINT; 全检查点
Tablespace 只是把相关的 tablespace 的数据写到磁盘上.
fast_start_mttr_target 这个参数比较重要, 断电到正常工作恢复所需要的时间, 这个参数是recovery database 的秒数, 比如 600秒, 你设定这个参数以后, oracle会自动调整其他指标来满足用户的要求.
LGWR 写的信息从 group1 到 group2 的同时, archivelog 将 group1 中的内容归档, 所以这里有个时间同步利用. 另外, 当 group1 要被覆盖时, 要确定它所对数据库做的修改而触发的 checkpoint 是否完成, 如果没有完成表示DBWn 还没有把信息写到磁盘, 这时候 group1 就不能被覆盖, 那么这时候数据库就hang在这了.