通過STANDBY資料庫實現讀寫分離時索引過多的問題
ORACLE 11G的物理STANDBY資料庫可以只讀開啟並實時應用,可以滿足很多應用更改為讀寫分離的架構。但業務上將主庫主要做DML操作,備庫上做SELECT操作,可能存在的一個問題就是,備庫上的SELECT可能需要大量的索引,而這些索引在主庫上實際是沒有意義的,並且還影響主庫DML操作的效能和日誌量。但物理STANDBY只能通過在主庫上建索引後同步到備庫上,備庫自己是無法新建索引的。這種情況就可以發揮邏輯STANDBY的優勢了。
資料庫的GUARD STATUS分為三種:NONE,STANDBY和ALL.預設邏輯STANDBY資料庫的GUARD STATUS是ALL,可通過SELECT GUARD_STATUS FROM V$DATABASE檢視,可通過ALTER DATABASE GUARD ALL/STANDBY/NONE進行調整。GUARD STATUS為ALL,可以防止資料庫中的所有物件被修改,也就是隻能通過SQL APPLY進行應用;GUARD STATUS為STANDBY,使用者不能修改SQL APPLY進行應用的表,但可以自己建立新表並進行相關的DDL/DML操作;GUARD STATUS為NONE,使用者可以隨便修改任何表,只要具有許可權即可。
針對備庫的SELECT操作需要大量索引的問題,通過邏輯STANDBY實現就簡單了,只需將GUARD STATUS修改為NONE,然後在備庫上建索引即可。
個人建議:
1.不要在原始的使用者下建索引,可以新建一個使用者,在新建的使用者上建原始使用者表上的索引,這樣便於區分。
2.一般不要在備庫上建唯一索引或其它約束,防止SQL APPLY無法應用。
3.對於需要對原始資料進行二次處理的需求,也可以通過在邏輯STADNBY上新建使用者進行處理。
物理STANDBY轉邏輯STANDBY的文件可參考:http://blog.itpub.net/28539951/viewspace-1776691/
資料庫的GUARD STATUS分為三種:NONE,STANDBY和ALL.預設邏輯STANDBY資料庫的GUARD STATUS是ALL,可通過SELECT GUARD_STATUS FROM V$DATABASE檢視,可通過ALTER DATABASE GUARD ALL/STANDBY/NONE進行調整。GUARD STATUS為ALL,可以防止資料庫中的所有物件被修改,也就是隻能通過SQL APPLY進行應用;GUARD STATUS為STANDBY,使用者不能修改SQL APPLY進行應用的表,但可以自己建立新表並進行相關的DDL/DML操作;GUARD STATUS為NONE,使用者可以隨便修改任何表,只要具有許可權即可。
針對備庫的SELECT操作需要大量索引的問題,通過邏輯STANDBY實現就簡單了,只需將GUARD STATUS修改為NONE,然後在備庫上建索引即可。
個人建議:
1.不要在原始的使用者下建索引,可以新建一個使用者,在新建的使用者上建原始使用者表上的索引,這樣便於區分。
2.一般不要在備庫上建唯一索引或其它約束,防止SQL APPLY無法應用。
3.對於需要對原始資料進行二次處理的需求,也可以通過在邏輯STADNBY上新建使用者進行處理。
物理STANDBY轉邏輯STANDBY的文件可參考:http://blog.itpub.net/28539951/viewspace-1776691/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-2124430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- Spring實現資料庫讀寫分離Spring資料庫
- Spring Aop實現資料庫讀寫分離Spring資料庫
- 資料庫的讀寫分離資料庫
- 資料庫讀寫分離資料庫
- 資料庫讀寫分離,主從同步實現方法資料庫主從同步
- 大資料資料庫讀寫分離分庫分表大資料資料庫
- 資料庫讀寫分離這個坑,你應該踩過吧?資料庫
- ShardingSphere(七) 讀寫分離配置,實現分庫讀寫操作
- (7)資料庫讀寫分離,主從同步實現方法(資料庫設定)資料庫主從同步
- 通過ES-Hadoop實現Hive讀寫Elasticsearch資料HadoopHiveElasticsearch
- Spring Boot + Mybatis 多資料來源配置實現讀寫分離Spring BootMyBatis
- ssm讀寫分離多資料來源SSM
- 【資料庫訪問優化方案之讀寫分離】資料庫優化
- 直播賣貨系統,如何實現mysql資料庫的讀寫分離MySql資料庫
- Docker實現Mariadb分庫分表、讀寫分離Docker
- 資料庫中介軟體sharding-jdbc實現讀寫分離資料庫JDBC
- 資料庫讀寫分離Master-Slave資料庫AST
- Discuz!NT資料庫讀寫分離方案資料庫
- Amoeba實現讀寫分離
- 如果通過流資料實現實時分析?
- standby 資料庫的建立過程資料庫
- Mysql資料庫是如何通過索引定位資料MySql資料庫索引
- EF Core3.0+ 通過攔截器實現讀寫分離與SQL日誌記錄SQL
- 帶貨直播系統,透過主從同步實現讀寫分離主從同步
- 【Mongo】Mongo讀寫分離的實現Go
- 資料庫治理利器:動態讀寫分離資料庫
- 讀寫分離的的資料同步?
- NCF 如何通過WebApi實現前後端分離WebAPI後端
- ProxySQL實現MySQL讀寫分離MySql
- Amoeba 實現 MySQL 讀寫分離MySql
- CQRS如何實現讀寫分離
- mysql讀寫分離實戰二-windows 上mysql主從資料庫搭建及問題總結MySqlWindows資料庫
- golang saas框架,資料庫級別隔離、讀寫分離Golang框架資料庫
- 資料庫的讀寫分離與負載均衡策略資料庫負載
- 資料讀寫壓力大,讀寫分離
- 線上MySQL讀寫分離,出現寫完讀不到問題如何解決MySql
- 通過 Swoole\Table 實現 Swoole 多程式資料共享