探索Oracle11gR2 之 DataGuard_03 三種保護模式
探索Oracle11gR2 之 DataGuard_03 三種保護模式
作者:吳偉龍Oracle的DataGuard技術有三種實現模式,分別是max performance、max availability、maxprotection這三種模式。
以下是來自Oracle文件的摘要資訊:
In some situations, a business cannot afford to lose data. In other situations,the availability of the database may be more important than the loss of data.Some applications require maximum database performance and can tolerate somesmall amount of data loss.
The following descriptions summarize the threedistinct modes of data protection.
Maximum protection This protection mode ensuresthat no data loss will occur if the primary database fails. To provide thislevel of protection, the redo data needed to recover each transaction must bewritten to both the local online redo log and to the standby redo log on atleast one standby database before the transaction commits. To ensure data losscannot occur, the primary database shuts down if a fault prevents it fromwriting its redo stream to the standby redo log of at least one transactionallyconsistent standby database.
Maximum availability Thisprotection mode provides the highest level of data protection that is possiblewithout compromising the availability of the primary database. Like maximumprotection mode, a transaction will not commit until the redo needed to recoverthat transaction is written to the local online redo log and to the standbyredo log of at least one transactionally consistent standby database. Unlikemaximum protection mode, the primary database does not shut down if a faultprevents it from writing its redo stream to a remote standby redo log. Instead,the primary database operates in maximum performance mode until the fault iscorrected, and all gaps in redo log files are resolved. When all gaps areresolved, the primary database automatically resumes operating in maximumavailability mode.
This mode ensures that no data loss will occur if the primarydatabase fails, but only if a second fault does not prevent a complete set ofredo data from being sent from the primary database to at least one standbydatabase.
Maximum performance This protection mode (thedefault) provides the highest level of data protection that is possible withoutaffecting the performance of the primary database. This is accomplished by allowinga transaction to commit as soon as the redo data needed to recover thattransaction is written to the local online redo log. The primary database'sredo data stream is also written to at least one standby database, but thatredo stream is written asynchronously with respect to the transactions thatcreate the redo data.
When network links with sufficient bandwidth are used, this modeprovides a level of data protection that approaches that of maximumavailability mode with minimal impact on primary database performance.
The maximum protection and maximum availability modes requirethat standby redo log files are configured on at least one standby database inthe configuration. All three protection modes require that specific logtransport attributes be specified on the LOG_ARCHIVE_DEST_n initializationparameter to send redo data to at least one standby database. See Section 5.6for complete information about the data protection modes.
以下是對以上摘要資訊的翻譯資訊:
在一些情況下,業務不允許丟失資料。在另外一些情況下,資料庫的可用性比丟失資料更為重要。一些應用需要最強的資料庫效能並且能容忍丟失少量的資料。下面的描述概述了三種不同的資料保護模式。
最大保護模式 -- 這種保護模式確保如果主資料庫故障不會發生資料丟失。要提供這種級別的保護,恢復每個事務所需的重做資料必須在事務提交之前同時寫到本地聯機重做日誌和至少一個備資料庫上的備重做日誌。要確保不發生資料丟失,如果故障導致主資料庫無法寫重做流到至少一個事務一致性備資料庫的備重做日誌時,主資料庫會關閉。
最大可用性模式 -- 這種保護模式提供了可能的最高級別的資料保護,而不用與主資料庫的可用性相折衷。與最大保護模式相同,在恢復事務所需的重做寫到本地聯機重做日誌和至少一個事務一致性備資料庫上的備重做日誌之前,事務將不會提交。與最大保護模式不同的是,如果故障導致主資料庫無法寫重做流到異地備重做日誌時,主資料庫不會關閉。替代地,主資料庫以最大效能模式執行直到故障消除,並且解決所有重做日誌檔案中的中斷。當所有中斷解決之後,主資料庫自動繼續以最大可用性模式執行。
這種模式確保如果主資料庫故障,但是隻有當第二次故障沒有阻止完整的重做資料集從主資料庫傳送到至少一個備資料庫時,不發生資料丟失。
最大效能模式 -- 這種保護模式(預設)提供了可能的最高級別的資料保護,而不影響主資料庫的效能。這是通過允許事務在恢復該事務所需重做資料在寫到本地聯機重做日誌後立即提交而實現的。主資料庫的重做資料流也寫到至少一個備資料庫,但是那個重做流相對於建立重做資料的事務是非同步寫的。
當所用的網路連線有足夠的頻寬,這種模式提供了近似於最大可用性模式的資料保護級別,並且對主資料庫效能的影響最小。最大保護和最大可用性模式需要備重做日誌檔案配置在配置中的至少一個備資料庫上。所有三種保護模式需要在LOG_ARCHIVE_DEST_n 初始化引數上指定特定的日誌傳輸屬性以傳送重做資料到至少一個備資料庫。檢視5.6 節以獲得資料保護模式的完整資訊。
實驗過程:
DG在最大效能模式MAXIMUM PERFORMANCE
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE TABLE
SQL> create table emp001 as select *from emp; 建立了一張表emp001
Table created.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
SALGRADE TABLE
去備機上檢視,這張表並沒有出現:
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE TABLE
這個時候,我需要在主庫上執行一次日誌切換:
SQL> alter system switch logfile;
System altered.
再備庫上再次查詢,表已經出來:
SQL> /
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE ----在主庫新建立的表
SALGRADE TABLE
DG在最大可用性模式Maximum availability
Primary端操作
修改初始化引數
SQL> alter system set log_archive_dest_2='SERVICE=sty OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=sty';
System altered.
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
----------------------------------------------- ------------------------------
log_archive_dest_2 string SERVICE=sty OPTIONAL LGWR SYNC
AFFIRM VALID_FOR=(ONLINE_LOGF
ILES,PRIMARY_ROLE) DB_UNIQUE_N
AME=sty
SQL> startup mount;
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 549455864 bytes
Database Buffers 285212672 bytes
Redo Buffers 2396160 bytes
Database mounted.
SQL> alter database set standby databaseto maximize availability;
Database altered.
提示:maximize後可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分別對應最大保護,最高可用性及最高效能。
Down掉資料庫,重新啟動
SQL> alter database open;
Database altered.
看一下當前的保護模式 --primary資料庫操作
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
SQL>
Standby端操作
SQL> alter system set log_archive_dest_2='SERVICE=pri OPTIONAL LGWR SYNCAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri';
System altered.
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
----------------------------------------------- ------------------------------
log_archive_dest_2 string SERVICE=pri OPTIONAL LGWR SYNC
AFFIRM VALID_FOR=(ONLINE_LOGF
ILES,PRIMARY_ROLE)DB_UNIQUE_N
AME=pri
SQL> selectprotection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
SQL>
這樣就已經配置完成了。
我們現在停掉standby資料庫,再看看primary資料庫狀態
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> selectprotection_mode,protection_level,name from v$database;
PROTECTION_MODE PROTECTION_LEVEL NAME
-------------------- ------------------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION WOO
Standby資料庫shutdown後,primary資料庫保護級別切換為待同步。
啟備機器後,一會兒就好了:
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 507512824 bytes
Database Buffers 327155712 bytes
Redo Buffers 2396160 bytes
Database mounted.
Database opened.
SQL> selectprotection_mode,protection_level,name from v$database;
PROTECTION_MODE PROTECTION_LEVEL NAME
-------------------- ----------------------------------------------------------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION WOO
SQL> selectprotection_mode,protection_level,name from v$database;
PROTECTION_MODE PROTECTION_LEVEL NAME
-------------------- ----------------------------------------------------------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITYWOO
SQL>
再檢視下主庫狀態:
SQL> selectprotection_mode,protection_level,name from v$database;
PROTECTION_MODE PROTECTION_LEVEL NAME
-------------------- ------------------------------
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITYWOO
測試:
在primary 執行建立表
檢視當前表的數量
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP003 TABLE
SALGRADE TABLE
6 rows selected.
刪除emp003表
SQL> drop table emp003 purge;
Table dropped.
建立emp004表
SQL> create table emp004 as select *from emp001;
Table created.
檢視emp003表已經被刪除,emp004表被建立成功。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP004 TABLE
SALGRADE TABLE
6 rows selected.
備庫上資料直接就可以過來了:
查詢到資料和第一次pry資料庫一致:
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP003 TABLE
SALGRADE TABLE
6 rows selected.
在pri端刪除emp003後,可以看到在sty端也隨即刪除。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
SALGRADE TABLE
在pri端建立emp004後,在sty端也隨即實時建立。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP004 TABLE
SALGRADE TABLE
6 rows selected.
SQL>
實驗二,在maximum availability 模式下關閉standby端,在主庫執行DML操作後起備庫,是否會有資料丟失:
1、 關閉standby端:
[[email protected] ~]# shutdown -h now
Broadcast message from root (pts/1) (TueMay 21 02:09:34 2013):
The system is going down for system haltNOW!
[[email protected] ~]#
2、 檢視主庫這個時候的狀態,已經檢測到了standby失敗
SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS From v$database;
NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
-------------------------------------------------- ---------------- -------------------- --------------------
WOO READ WRITE PRIMARY MAXIMUM AVAILABILITY FAILEDDESTINATION
SQL>
3、 這個時候我們刪除emp004及建立emp005
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP004 TABLE
SALGRADE TABLE
6 rows selected.
SQL> drop table emp004 purge;
Table dropped.
SQL> create table emp005 as select *from emp001;
Table created.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP005 TABLE
SALGRADE TABLE
6 rows selected.
4、 把sty伺服器啟起來,open資料庫:
開啟備庫後,我們可以看到,standby現在正在應用日誌:
SQL> select process, status fromv$managed_standby;
PROCESS STATUS
--------- ------------
ARCH CLOSING
ARCH CLOSING
ARCH CONNECTED
ARCH CLOSING
RFS IDLE
RFS IDLE
RFS IDLE
MRP0 APPLYING_LOG
過一會兒,我們再查詢,發現standby 端宕機過程中primary端資料庫的改變也同樣通過日誌更新過來了。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP005 TABLE
SALGRADE TABLE
6 rows selected.
我們通過這個實驗可以看出,將DataGuard配置為Maximumavailability模式後,pri資料是實時同步到sty端。
1、將主庫修改為最大保護模式
先關閉主庫
SQL>shutdown immediate
Databaseclosed.
Databasedismounted.
ORACLEinstance shut down.
啟動到mount狀態
SQL>startup mount;
ORACLEinstance started.
TotalSystem Global Area 839282688 bytes
FixedSize 2217992 bytes
VariableSize 557844472 bytes
DatabaseBuffers 276824064 bytes
RedoBuffers 2396160 bytes
Databasemounted.
修改為最大保護模式
SQL>alter database set standby database to maximize protection;
Databasealtered.
Open資料庫
SQL>alter database open;
Databasealtered.
Primary端查詢狀態:
SQL>select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS From v$database;
NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
-------------------------------------------------- ---------------- -------------------- --------------------
WOO READ WRITE PRIMARY MAXIMUM PROTECTION TO STANDBY
Standby端查詢狀態(切換隻需要操作主庫,備庫不需要動即可)
SQL>select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS From v$database;
NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
----------------------------- ---------------- -------------------- --------------------
WOO READ ONLY WITH APPLY PHYSICAL STANDBYMAXIMUM PROTECTION NOT ALLOWED
我們現在可以看到,primary和standby端現在都為Maximumprotection 最大保護模式。
實驗
先檢視當前的表
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP005 TABLE
SALGRADE TABLE
6 rows selected.
我們刪除emp005以及建立emp006表
SQL> drop table emp005 purge;
Table dropped.
SQL> create table emp006 as select* from emp001;
Table created.
我們可以看到emp005已經被刪除,並且emp006表也被建立好了。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP006 TABLE
SALGRADE TABLE
6 rows selected.
SQL>
現在看standby端,我們可以發現如下
兩邊的表是一樣的
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP005 TABLE
SALGRADE TABLE
6 rows selected.
在主庫端刪除的emp005及新建立的emp006也實時同步過來了
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP001 TABLE
EMP006 TABLE
SALGRADE TABLE
6 rows selected.
SQL>
我現在關閉sty端伺服器:
[[email protected] ~]# shutdown -h now
Broadcast message from root (pts/1)(Tue May 21 03:14:28 2013):
The system is going down for systemhalt NOW!
返回來看主庫的狀態:
日誌傳輸以及終止了:
Log Transport Services Error ORA-16198: LGWR received timedout error from KSR
Log Transport Services Error Error 12543 received logging on to the standby
Log Transport Services Error LGWR: Error 12543 attaching to RFS for reconnect
Log Transport Services Error Error 12543 received logging on to the standby
Log Transport Services Error LGWR: Error 12543 attaching to RFS for reconnect
一段時間之後,primary端也宕機了:
SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS From v$database;
NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
------------------------------------------------------------ ---------------- -------------------- --------------------
WOO READWRITE PRIMARY MAXIMUM PROTECTION TO STANDBY
SQL> selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS From v$database;
selectname,open_mode,database_role,protection_mode,SWITCHOVER_STATUS From v$database
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 8386
Session ID: 39 Serial number: 5
這個時候需要把standby端起來,primary端,資料庫才能起來。
SQL> startup mount;
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 507512824 bytes
Database Buffers 327155712 bytes
Redo Buffers 2396160 bytes
Database mounted.
停止redo應用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASECANCEL;
Database altered.
Open資料庫
SQL> alter database open;
Database altered.
開啟redo應用
SQL> ALTER DATABASE RECOVER MANAGEDSTANDBY DATABASE DISCONNECT FROM SESSION;
Database altered.
Database altered.再啟主庫
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 507512824 bytes
Database Buffers 327155712 bytes
Redo Buffers 2396160 bytes
Database mounted.
Database opened.
最後我們一塊來看一個表格,一目瞭然的清楚DG三種模式的區別:
最大保護模式 |
最大可用 |
最大效能 |
|
程序 |
LGWR |
LGWR |
LGWR或ARCH |
網路傳輸模式 |
SYNC |
SYNC |
LGWR時設定SYNC |
磁碟寫操作 |
AFFIRM |
AFFIRM |
NOAFFIRM |
備用日誌 |
Yes |
Phycal 備庫需要 |
LGWR和物理需要 |
備用庫型別 |
Phycal mode |
Phycal and logical |
Phycal and logical |
相關推薦
探索Oracle11gR2 之 DataGuard_03 三種保護模式
探索Oracle11gR2 之 DataGuard_03 三種保護模式 作者:吳偉龍 Oracle的DataGuard技術有三種實現模式,分別是max performance、max availability、maxprotection這三種模式。 以下是來自Or
聊聊Dataguard的三種保護模式實驗
http://blog.itpub.net/17203031/viewspace-1821550/ Data Guard是Oracle高可用性HA的重要解決方案。針對不同的系統保護需求,DG提供了三種不同型別的保護模式(Protection Mode),分別
dataguard 三種保護模式
1、最大保護 這種保護模式在主庫出現問題時不會有資料的丟失,為了提供這種保護模式,一個事物必須同時寫本地的online redo log,和至少一個備庫的redo log同步,才能commit; 為了確保資料不會丟失,如果備庫至少有一個日誌不能寫入,
聊聊Dataguard的三種保護模式實驗(上)
保護模式(Protection Mode),分別為:最大保護(Maximum Protection)、最大可用(Maximum Availability)和最大效能(Maximum performance)。在實際應用場景下,我們需要根據不同的業務場景和資料可用性需求,來設定
通過fsharp 使用Enterprise Library Unity 3 - 三種攔截模式的探索
clean stc ane adding clas 是什麽 idc 內部函數 ash 這篇就三種攔截模式進行一下探索。 特性總結 類型 特點 其它 InterfaceInter
Linux之vi三種模式常用操作
num 快捷 字母 內容替換 info tar linux 刪除 光標 vi的三種模式:命令模式、編輯模式、尾行模式 一.命令模式 1.光標移動 a、字符級 左(h) 下(j) 上(k) 右(l) b、單詞級 w wor
Java程式設計師從笨鳥到菜鳥之(三十二)大話設計模式(二)設計模式分類和三種工廠模式
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java設計模式之三種工廠模式 -- 總是忘記,這次把你記下來!
} interfaceIProduct1 { public void show(); } interfaceIProduct2 { public void show(); } classProduct1 implements IProduct1 { public void show() {
hadoop初識之三:搭建hadoop環境(配置HDFS,Yarn及mapreduce 執行在yarn)上及三種執行模式(本地模式,偽分散式和分散式介)
--===============安裝jdk(解壓版)================== --root 使用者登入 --建立檔案層級目錄 /opt下分別 建 modules/softwares/datas/tools 資料夾 --檢視是否安裝jdk rpm -
Centos7之Apache的三種工作模式
滿足 read 高流量 event 也有 聲明 vpd 問題 出現 Apache工作模式簡介 Apache 2.X 支持插入式並行處理模塊,稱為多進程處理模塊(MPM)。在編譯apache時必須選擇也只能選擇一個MPM,對類UNIX系統,有幾個不同的MPM可供選擇,它們會
web優化必須瞭解的原理之I/o的五種模型和web的三種工作模式
=========================================== 圖解五種I/O模型 圖解web支援的三種工作模式 =========================================== 五種I/O: 1)阻塞I
171129之Java的三種代理模式
1:代理模式 代理(Proxy)是一種設計模式,提供了對目標物件另外的訪問方式,即通過代理物件訪問目標物件。這樣做的好處是,可以在目標物件實現的基礎上,增加額外的功能操作,即擴充套件目標物件的功能。 這裡使用到程式設計中的一個思想:不要隨意去修改別人已經寫好
APP三種開發模式--之--HybridApp解決方案
原文:http://www.cnblogs.com/yeahui/p/5026587.html 1.1. APP三種開發模式 智慧手機之普及不用多說,手機APP滲投到各個行業:電商(淘寶、京東等)、金融(各手機行業、P2P借貸等)、醫療(智慧醫療)、交通(滴滴、Uber等)、教育(慕課網等)
Entity Framework技術系列之2:三種開發模式實現資料訪問
前言 Entity Framework支援Database First、Model First和Code Only三種開發模式,各模式的開發流程大相徑庭,開發體驗完全不一樣。三種開發模式各有優缺點,對於程式設計師沒有哪種模式最好,只有哪種模式更適合。接下來我將分別使用這
設計模式—三種工廠模式(JAVA)
bsp ati int abs @override 手機 分配 ron size 一:簡單工廠: 有一個實際工廠,這個工廠只能造一類的產品,這一類產品就是一個產品接口,會有多個具體產品實現這個接口,例 如,一個手機廠,生產蘋果手機,三星手機;
Java的三種代理模式
value 增加方法 三種 原始的 攔截 tro asm 必須 額外 1.代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操作,即擴展目標對象的功能.這裏使用到
apache的三種工作模式
httpdweb服務器Apache目前一共有三種穩定的MPM(Multi-Processing Module,多進程處理模式)它們分別是prefork、worker和event,它們同時也代表這Apache的 演變和發展使用httpd -V命令查看Apache的工作模式,如我安裝的httpd-2.2版本[[e
EF3:Entity Framework三種開發模式實現數據訪問
支持 代碼 sql blog flow cli guid 自動完成 main 前言 Entity Framework支持Database First、Model First和Code Only三種開發模式,各模式的開發流程大相徑庭,開發體驗完全不一樣。三種開發模式各有優缺
雲計算的三種服務模式:IaaS,PaaS和SaaS
雲服務 互聯網 src 部分 stand googl 而且 vnc rackspace 雲服務”現在已經成了一個家喻戶曉的詞了。如果你不知道PaaS, IaaS 和SaaS的區別,那麽也沒啥,因為很多人確實不知道。 “雲”其實是互聯網的一個隱喻,“雲計算”其實就是使用
PHP常用的三種設計模式
寫代碼 comment 獲得 return interface 高級 對象 檢測 mys 本文為大家介紹常用的三種php設計模式:單例模式、工廠模式、觀察者模式,有需要的朋友可以參考下。 一、首先來看,單例模式 所謂單例模式,就是確保某個類只有一個實例,而且自行實例化並向整