oracle Log Buffer内部机制以及常见等待事件
重做产生于PGA,再由各个session的服务器进程将重做记录拷贝到SGA 的log buffer中,再由LGWR进程刷新到redo log文件中
重做产生于PGA,再由各个session的服务器进程将重做记录拷贝到SGA 的log buffer中,再由LGWR进程刷新到redo log文件中
涉及到的三个latch:
Redo copy latch
Redo allocation latch
Redo writing latch
Redo copy latch
redo copy latch的数量可以有多个,可以通过_log_simultaneous_copies参数来设定,,缺省值是两倍CPU的个数,
此latch保护日志缓存中的信息,主要用于从PGA拷贝重做到log buffer中,但是不允许对重做记录一边进行修改,
一边将重做记录写入磁盘。所以LGWR工作的时候,必须等待持有redo copy latch 的前台进程将要刷新的重做记录拷贝完毕
这里也就是说,LGWR从redo log buffer写到文件的时候,是无法写正在copy的redo log buffer,但是可以写不持有
Redo copy latch的log buffer。
Redo allocation latch
前台进程和LGWR都将持有该latch
Oracle把向log buffer中写缓存这样一个操作分做两个步骤:
1. 是先在log buffer中分配一块空间
2. 是向这块空间中实际的写入重做信息
当前台进行分配空间的时候,必须先持有该latch,但是该阶段该latch只有一个,所以前台进程这个时候会相互阻塞。
当LGWR进行刷新缓存时,持有该latch,当确定刷新的范围后,那么就会写到磁盘,写磁盘前会释放该latch
Redo writing latch
当日志缓存没空间分配时,前台进程必须通知LGWR刷新日志缓存,只有第一个得到此latch的进程通知LGWR,
用来阻止其他进程通知LGWR,通知后,马上释放该latch,不会一直占用。LGWR得到通知,持有该latch,
写入磁盘文件前释放该latch。
重做产生的流程:
1.先在PGA中生成重做记录,并计算出重做记录大小
2.由服务器进程申请redo copy latch如果成功的话继续
3.再去申请redo allocation,成功分配空间后
4.释放redo allocation
5.开始把PGA中的重做记录写往log buffer
6.记录写完后,释放redo copy latch
_log_io_size:如果使用的log buffer大小等于或者大于该值,那么就触发LGWR写磁盘,缺省大小为log buffer的1/3,上限值为1M
redo buffer等待事件:
LOG BUFFER SPACE:
redo copy的速度快于LGWR,造成free log buffer总是不够用
原因:
LOG BUFFER太小,总没有空间copy
LOG BUFFER太大,但是录入的太频繁
提高LGWR写的效率,以及磁盘的IO性能
log file parallel write
此等待事件是LGWR将log buffer写到在线日志文件,重用log buffer。
解决方法:
减少日志的生成(NOLOGGING)
减少日志组成员数
避免在备份模式下做大量的事务
尽量用最小的辅助日志模式(Supplemental Logging),如在LOGMINER下分析日志.
日志组成员分布在不同的物理磁盘上
不要将在线日志存放在RAID5上
尽量使用裸设备
Log file sync
事物提交时,一个进程创建一个重做记录,LGWR从log buffer写到磁盘,当再次发出commit,前面的LGWR还没有完成,会造成log file sync等待
原因:
过度频繁的提交
CPU使用过度
bug
如果log file sync接近log file parallel write,那么冲突可能是日志IO问题,如果远大于,则IO不是主要问题
Log file switch(checkpoint incomplete)
当日志切换的时候,要覆盖一个检查点未完成的的日志造成的等待
解决办法:
IO有严重问题,增加DBWR的效率,提高磁盘IO性能
增大日志文件
增加日志组
Log file switch (archiving needed)
如果是归档模式存在此等待,那就是归档的速度慢,可以调整归档日志所在磁盘的性能,调整log_archive_max_processes。
log file sequential read
当redo进行归档时,会顺序读取redo日志,会造成此等待

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Keupayaan carian teks penuh InnoDB sangat kuat, yang dapat meningkatkan kecekapan pertanyaan pangkalan data dan keupayaan untuk memproses sejumlah besar data teks. 1) InnoDB melaksanakan carian teks penuh melalui pengindeksan terbalik, menyokong pertanyaan carian asas dan maju. 2) Gunakan perlawanan dan terhadap kata kunci untuk mencari, menyokong mod boolean dan carian frasa. 3) Kaedah pengoptimuman termasuk menggunakan teknologi segmentasi perkataan, membina semula indeks dan menyesuaikan saiz cache untuk meningkatkan prestasi dan ketepatan.

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Ya, MySQL boleh dipasang pada Windows 7, dan walaupun Microsoft telah berhenti menyokong Windows 7, MySQL masih serasi dengannya. Walau bagaimanapun, perkara berikut harus diperhatikan semasa proses pemasangan: Muat turun pemasang MySQL untuk Windows. Pilih versi MySQL yang sesuai (komuniti atau perusahaan). Pilih direktori pemasangan yang sesuai dan set aksara semasa proses pemasangan. Tetapkan kata laluan pengguna root dan simpan dengan betul. Sambung ke pangkalan data untuk ujian. Perhatikan isu keserasian dan keselamatan pada Windows 7, dan disyorkan untuk menaik taraf ke sistem operasi yang disokong.

Pengimbasan jadual penuh mungkin lebih cepat dalam MySQL daripada menggunakan indeks. Kes -kes tertentu termasuk: 1) jumlah data adalah kecil; 2) apabila pertanyaan mengembalikan sejumlah besar data; 3) Apabila lajur indeks tidak selektif; 4) Apabila pertanyaan kompleks. Dengan menganalisis rancangan pertanyaan, mengoptimumkan indeks, mengelakkan lebih banyak indeks dan tetap mengekalkan jadual, anda boleh membuat pilihan terbaik dalam aplikasi praktikal.

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

Perbezaan antara indeks clustered dan indeks bukan cluster adalah: 1. Klustered Index menyimpan baris data dalam struktur indeks, yang sesuai untuk pertanyaan oleh kunci dan julat utama. 2. Indeks Indeks yang tidak berkumpul indeks nilai utama dan penunjuk kepada baris data, dan sesuai untuk pertanyaan lajur utama bukan utama.

Artikel membincangkan strategi untuk mengendalikan dataset besar di MySQL, termasuk pembahagian, sharding, pengindeksan, dan pengoptimuman pertanyaan.
