典型的不好的设计: 破坏了系统的可扩展性(韧性)
Applications requiring significant concurrency management as user populations increase
Increased locking activities
Increased data consistency workload
Increased operating system workload
Transactions requiring increases in data access as data volumes increase
Poor SQL and index design resulting in a higher number of logical I/Os for the same number of rows returned
Reduced availability, because database objects take longer to maintain
Application Design Principles
table: 的设计, 一般是要满足3范式, 但是出于性能的考虑, 有时候违背范式
另外要特别关注也些业务十分重要的table的逻辑关系.
index: 首先创建表时, 建议根据主键建立索引.
另外, 再增加索引时, 需要考虑以下几个方面:
1. 为列增加索引, 还是直接使用索引组织表?
2. 使用不同类型的索引
3. 考虑增加索引后的开销
4. 在sequence 或 timestamp上创建索引, 可能带来问题
5. 在索引中列的顺序
Top Ten Mistakes Found in Oracle Systems
Bad connection management
Bad use of cursors and the shared pool
Bad SQL
Use of nonstandard initialization parameters
Getting database I/O wrong
Online redo log setup problems
(Many sites run with too few online redo log files and files that are too small. )
small redo log files cause system checkpoints to continuously put a high load on the buffer cache and I/O system.
Serialization of data blocks in the buffer cache due to lack of free lists, free list groups, transaction slots (INITRANS), or shortage of rollback segments
This is particularly common on INSERT-heavy applications, ASSM 和 auto undo management 可以解决这个问题
Long full table scans
High amounts of recursive (SYS) SQL
Large amounts of recursive SQL executed by SYS could indicate space management activities,
Use locally managed tablespaces to reduce recursive SQL due to extent allocation.
Deployment and migration errors