自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

數(shù)據(jù)庫(kù) MySQL
今天主要從一個(gè)案例來(lái)介紹一下log file sync這個(gè)等待事件及常用的一些解決辦法,下面先看下故障時(shí)間段的等待事件。

今天主要從一個(gè)案例來(lái)介紹一下log file sync這個(gè)等待事件及常用的一些解決辦法,下面先看下故障時(shí)間段的等待事件。

1. 查看卡頓時(shí)間段的等待事件及會(huì)話

查看故障時(shí)間段等待事件、問(wèn)題sql id及會(huì)話訪問(wèn)次數(shù)

  1. select trunc(sample_time, 'mi') tm, sql_id, nvl(event,'CPU'),count(distinct session_id) cnt 
  2.  from dba_hist_active_sess_history 
  3.  where sample_time between to_date('2019-09-03 9:30:00') and 
  4.  to_date('2019-09-03 11:00:00') 
  5.  group by trunc(sample_time, 'mi'), sql_id,nvl(event,'CPU') 
  6.  order by cnt desc; 

查看該sql相關(guān)的等待事件及對(duì)應(yīng)的會(huì)話訪問(wèn)次數(shù)

  1. select sql_id, nvl(event, 'CPU'), count(distinct session_id) sz 
  2.  from dba_hist_active_sess_history a, dba_hist_snapshot b 
  3.  where sample_time between to_date('2019-09-03 09:30:00') and 
  4.  to_date('2019-09-03 11:00:00') 
  5.  and sql_id = '0spj1q9t1yh2d' 
  6.  and a.snap_id = b.snap_id 
  7.  and a.instance_number = b.instance_number 
  8.  group by sql_id, nvl(event, 'CPU') 
  9.  order by sz desc; 

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

很明顯看到都是log file sync等待事件很明顯。那什么是log file sync呢?

2. log file sync -- 日志文件同步

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

在一個(gè)提交(commit)十分頻繁的數(shù)據(jù)庫(kù)中,一般會(huì)出現(xiàn)log file sync等待事件,當(dāng)這個(gè)等待事件出現(xiàn)在top5中,這個(gè)時(shí)侯我們需要針對(duì)log file sync等待事件進(jìn)行優(yōu)化,一定要盡快分析并解決問(wèn)題,否則當(dāng)log file sync等待時(shí)間從幾毫秒直接到20幾毫秒可能導(dǎo)致系統(tǒng)性能急劇下降,甚至?xí)?dǎo)致短暫的掛起。

當(dāng)一個(gè)用戶(hù)提交或回滾數(shù)據(jù)時(shí), LGWR 將會(huì)話期的重做由 Log Buffer 寫(xiě)入到重做日志中,LGWR 完成任務(wù)以后會(huì)通知用戶(hù)進(jìn)程。 日志文件同步等待( Log File Sync) 就是指進(jìn)程等待LGWR 寫(xiě)完成這個(gè)過(guò)程, 對(duì)于回滾操作,該事件記錄從用戶(hù)發(fā)出 rollback 命令到回滾完成的時(shí)間。如果該等待過(guò)多,可能說(shuō)明 LGWR 的寫(xiě)出效率低下,或者系統(tǒng)提交過(guò)于頻繁。 針對(duì)該問(wèn)題,可以關(guān)注 log file parallel write 等待事件,或者通過(guò) user commits,user rollback 等統(tǒng)計(jì)信息觀察提交或回滾次數(shù)。

總之,log file sync的根源一般是頻繁commit/rollback或磁盤(pán)I/O有問(wèn)題,大量物理讀寫(xiě)爭(zhēng)用。

可以通過(guò)如下公式計(jì)算平均 Redo 寫(xiě)大?。?/p>

  1. avg.redo write size = (Redo block written/redo writes)*512 bytes 

如果系統(tǒng)產(chǎn)生 Redo 很多,而每次寫(xiě)的較少,一般說(shuō)明 LGWR 被過(guò)于頻繁地激活了。 可能導(dǎo)致過(guò)多的 Redo 相關(guān) Latch 的競(jìng)爭(zhēng), 而且 Oracle 可能無(wú)法有效地使用 piggyback 的功能。從一個(gè)AWR報(bào)告中提取一些數(shù)據(jù)來(lái)研究一下這個(gè)問(wèn)題。

log file sync等待事件的優(yōu)化方案:

  • 優(yōu)化了redo日志的I/O性能,盡量使用快速磁盤(pán),不要把redo log file存放在raid 5的磁盤(pán)上;
  • 加大日志緩沖區(qū)(log buffer);
  • 使用批量提交,減少提交的次數(shù);
  • 部分經(jīng)常提交的事務(wù)設(shè)置為異步提交;
  • 適當(dāng)使用NOLOGGING/UNRECOVERABLE等選項(xiàng);
  • 采用專(zhuān)用網(wǎng)絡(luò),正確設(shè)置網(wǎng)絡(luò)UDP buffer參數(shù);
  • 安裝最新版本數(shù)據(jù)庫(kù)避免bug

3. awr報(bào)告--rman備份

收集一下awr報(bào)告來(lái)分析,收集過(guò)程這里就不做介紹了。

(1) 報(bào)告如下:

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

這里可以注意到有一個(gè)異常的等待事件--RMAN backup & recovery I/O,應(yīng)該是rman剛好在做備份導(dǎo)致的磁盤(pán)IO繁忙

(2) 觀察RMAN日志

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

很明顯是從凌晨5點(diǎn)開(kāi)始備份,一直備份到接近10點(diǎn)導(dǎo)致,這里也消耗了一部分的磁盤(pán)IO

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

(3) 調(diào)整備份時(shí)間

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

下面回到log file sync的分析上。

4. awr報(bào)告--log file sync

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

注意以上輸出信息,這里 log file sync 和 db file parallel write 等等待事件同時(shí)出現(xiàn),那么可能的一個(gè)原因是 I/O 競(jìng)爭(zhēng)導(dǎo)致了性能問(wèn)題, 實(shí)際用戶(hù)環(huán)境正是日志文件和數(shù)據(jù)文件同時(shí)存放在 RAID5 的磁盤(pán)上,存在性能問(wèn)題需要調(diào)整。

(RAID 5不對(duì)數(shù)據(jù)進(jìn)行備份,而是把數(shù)據(jù)和與其相對(duì)應(yīng)的奇偶校驗(yàn)信息存儲(chǔ)到組成RAID5的各個(gè)磁盤(pán)上,并且奇偶校驗(yàn)信息和相對(duì)應(yīng)的數(shù)據(jù)分別存儲(chǔ)于不同的磁盤(pán)上。當(dāng)RAID5的一個(gè)磁盤(pán)數(shù)據(jù)損壞后,利用剩下的數(shù)據(jù)和相應(yīng)的奇偶校驗(yàn)信息去恢復(fù)被損壞的數(shù)據(jù)。)

5. 計(jì)算平均日志寫(xiě)大小:

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

  1. avg.redo write size = (Redo block written/redo writes)*512 bytes= ( 3,596,472/ 150,976 )*512 =12196 bytes =11KB 

這個(gè)平均值有點(diǎn)小了,說(shuō)明系統(tǒng)的提交過(guò)于頻繁。

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

從以上的統(tǒng)計(jì)信息中, 可以看到平均每秒數(shù)據(jù)庫(kù)的提交數(shù)量是18.62 次。 如果可能, 在設(shè)計(jì)應(yīng)用時(shí)應(yīng)該選擇合適的提交批量,從而提高數(shù)據(jù)庫(kù)的效率。

6. Oracle11g新特性(Adaptive Log File Sync - 自適應(yīng)的Log File Sync)

關(guān)于 Log File Sync 等待的優(yōu)化,在Oracle數(shù)據(jù)庫(kù)中一直是常見(jiàn)問(wèn)題,LOG FILE的寫(xiě)出性能一旦出現(xiàn)波動(dòng),該等待就可能十分突出。

在Oracle 11.2.0.3 版本中,Oracle 將隱含參數(shù) _use_adaptive_log_file_sync 的初始值設(shè)置為 TRUE,由此帶來(lái)了很多 Log File Sync 等待異常的情況,當(dāng)前臺(tái)進(jìn)程提交事務(wù)(commit)后,LGWR需要執(zhí)行日志寫(xiě)出操作,而前臺(tái)進(jìn)程因此進(jìn)入 Log File Sync 等待周期。

在以前版本中,LGWR 執(zhí)行寫(xiě)入操作完成后,會(huì)通知前臺(tái)進(jìn)程,這也就是 Post/Wait 模式;在11gR2 中,為了優(yōu)化這個(gè)過(guò)程,前臺(tái)進(jìn)程通知LGWR寫(xiě)之后,可以通過(guò)定時(shí)獲取的方式來(lái)查詢(xún)寫(xiě)出進(jìn)度,這被稱(chēng)為 Poll 的模式,在11.2.0.3中,這個(gè)特性被默認(rèn)開(kāi)啟。這個(gè)參數(shù)的含義是:數(shù)據(jù)庫(kù)可以在自適應(yīng)的在 post/wait 和 polling 模式間選擇和切換。

_use_adaptive_log_file_sync 參數(shù)的解釋就是: Adaptively switch between post/wait and polling ,正是由于這個(gè)原因,帶來(lái)了很多Bug,反而使得 Log File Sync 的等待異常的高,在遇到問(wèn)題時(shí),通常將 _use_adaptive_log_file_sync 參數(shù)設(shè)置為 False,回歸以前的模式,將會(huì)有助于問(wèn)題的解決。

這里我的數(shù)據(jù)庫(kù)版本是11.2.0.1,檢查發(fā)現(xiàn)也有這種情況,所以做了一些參數(shù)上的調(diào)整:

  1. SQL> show parameter parallel_adaptive_multi_user; 
  2. SQL> alter system set parallel_adaptive_multi_user=false scope=both

記一次生產(chǎn)數(shù)據(jù)庫(kù)log file sync 等待事件異常及處理過(guò)程

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2022-06-01 06:17:42

微服務(wù)Kafka

2019-12-12 10:38:10

mysql數(shù)據(jù)庫(kù)nnodb

2018-12-06 16:25:39

數(shù)據(jù)庫(kù)服務(wù)器線程池

2019-11-18 13:42:55

MySQL數(shù)據(jù)庫(kù)遷移

2019-08-19 01:34:38

數(shù)據(jù)庫(kù)SQL數(shù)據(jù)庫(kù)優(yōu)化

2019-11-22 08:05:01

數(shù)據(jù)庫(kù)mysql分區(qū)

2021-02-01 09:00:34

Ceph octopu集群運(yùn)維

2019-12-27 10:43:48

磁盤(pán)數(shù)據(jù)庫(kù)死鎖

2019-12-02 08:09:57

境數(shù)據(jù)庫(kù)連接超時(shí)自動(dòng)回收

2018-07-18 15:37:24

數(shù)據(jù)庫(kù)DB2故障處理

2019-09-27 17:24:26

數(shù)據(jù)庫(kù)優(yōu)化sql

2019-07-25 08:30:58

數(shù)據(jù)庫(kù)服務(wù)器故障

2021-01-12 07:57:36

MySQLBinlog故障處理

2019-09-05 09:17:37

MySQL數(shù)據(jù)庫(kù)線程

2019-12-16 07:18:42

數(shù)據(jù)庫(kù)SQL代碼

2021-03-01 06:14:50

環(huán)境高并發(fā)延遲

2019-08-15 11:30:06

SQL數(shù)據(jù)庫(kù)ASH

2020-09-25 07:57:42

生產(chǎn)事故系統(tǒng)

2020-11-03 07:34:12

Kafka后端工程師

2021-02-06 13:00:11

工具監(jiān)控服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)