Rumah > Artikel > pangkalan data > Analisis ringkas seni bina Oracle
Artikel ini membawakan anda pengetahuan yang berkaitan tentang Oracle, yang kebanyakannya menyusun isu berkaitan seni bina Oracle secara amnya dibahagikan kepada dua bahagian: Contoh (contoh) dan Pangkalan Data (pangkalan data), mari kita lihat. pada itu, saya harap ia akan membantu semua orang.
Tutorial yang disyorkan: "Tutorial Video Oracle"
Seni bina Oracle secara amnya dibahagikan kepada dua bahagian: Instance (Instance ) dan Pangkalan data (pangkalan data) .
Seperti yang ditunjukkan dalam Rajah 1:
Rajah 1 Seni bina pangkalan data Oracle
Apa yang biasa kita panggil Pelayan Oracle (Pelayan Oracle) terdiri daripada Oracle Instance dan Pangkalan Data Oracle, seperti yang ditunjukkan dalam Rajah 2:
Rajah 2 Oracle Server
Oracle Instance terutamanya mengandungi SGA Dan beberapa Proses Backgroud (contohnya: PMON, SMON, DBWR, LGWR, CKPT, dll.).
SGA mengandungi 6 komponen asas: Kolam Kongsi (Cache Perpustakaan, Cache Kamus Data), Cache Penampan Pangkalan Data, Penampan Log Buat Semula, Kolam Java, Kolam Besar, kolam aliran .
Fungsi 6 komponen asas ini akan diperkenalkan di bawah.
1) kumpulan kongsi
Apakah fungsi mereka?
Cache Perpustakaan: Tempat penghuraian untuk SQL dan PL/SQL, yang menyimpan kandungan penyata SQL dan PL/SQL yang disusun dan dihuraikan untuk dikongsi oleh semua pengguna.
* Jika pernyataan SQL yang sama dilaksanakan pada kali seterusnya, tidak perlu menghuraikannya dan ia akan dilaksanakan serta-merta daripada Cache Perpustakaan.
* SAIZ Cache Perpustakaan akan menentukan kekerapan menyusun dan menghuraikan pernyataan SQL, dengan itu menentukan prestasi.
* Cache Pustaka mengandungi dua bahagian: Shared SQL Area dan Shared PL/SQL Area.
Cache Kamus Data: Menyimpan maklumat kamus data penting untuk kegunaan pangkalan data.
* Kamus Data ialah yang paling kerap digunakan dan hampir semua operasi memerlukan pertanyaan kamus data. Untuk meningkatkan kelajuan mengakses Kamus Data, Cache diperlukan pada masa ini, dan memori boleh diakses apabila diperlukan.
* Maklumat dalam Cache Kamus Data termasuk Fail Pangkalan Data, Jadual, Indeks, Lajur, Pengguna, Keistimewaan dan objek pangkalan data lain.
Cache Keputusan Pelayan: Menyimpan set hasil SQL bahagian pelayan dan nilai pulangan fungsi PL/SQL.
Setelah membaca penjelasan di atas, anda mungkin merasakan ianya agak abstrak, jadi saya akan menerangkannya melalui contoh di bawah.
Andaikan arahan diserahkan pada klien, seperti berikut:
SELECT ename,sal FROM emp WHERE empno=7788;
Jika pernyataan ini diserahkan kepada pangkalan data untuk kali pertama, ia perlu dihuraikan dibahagikan kepada penghuraian keras dan penghuraian lembut.
Pada kali seterusnya anda menaip ayat yang sama (tanda baca, huruf besar dan ruang adalah betul-betul sama), tidak perlu menghurai keras.
Jika klien menyerahkan arahan lain pada masa ini:
select ename,sal from emp where empno=7788;Tebak, pernyataan ini memerlukan Adakah ia dihuraikan?
Jawapan: Ya.
Nota kecil: Ambil perhatian bahawa pernyataan mestilah betul-betul sama untuk mengelakkan penghuraian. Tanda baca, huruf besar, ruang, dll. mestilah betul-betul sama! Faedah penulisan biasa ditunjukkan di sini.
Seperti yang dinyatakan sebelum ini, jika ia adalah pernyataan pilih, set keputusan akan dikembalikan selepas pelaksanaan. Di manakah set keputusan disimpan?
select ename,sal from emp where empno=7788;
2) Cache Penampan Pangkalan Data
小说明:逻辑读(从内存读)的速度是物理读(从磁盘读)的1万倍呦,所以还是想办法尽量多从内存读哦。
所以,数据缓冲区的大小对数据库的读取速度有直接的影响。
例如用户访问一个表里面的记录时,数据库接收到这个请求后,首先会在Database Buffer Cache中查找是否存在该数据库表的记录,如果有所需的记录就直接从内存中读取该记录返回给用户(有效提升了访问的速度),否则只能去磁盘上去读取。
继续看上面的例子:
select ename,sal from emp where empno=7788;
该条语句以及它的执行计划被放在Library Cache里,但语句涉及到的数据,会放在 Database Buffer Cache 里。
小问答:
Database Buffer Cache是怎么工作的呢?
这就要说一说Database Buffer Cache的设计思想了。
磁盘上存储的是块(block),文件都有文件号,块也有块号。
若要访问磁盘上的块,并不是CPU拿到指令后直接访问磁盘,而是先把块读到内存中的Database Buffer cache里,生成副本,查询或增删改都是对内存中的副本进行操作。如图3所示。
另外,如果是增删操作,操作后会形成脏块,脏块会在恰当时机再写回磁盘原位置,注意哦,可不是立刻写回呦。
也许你会问,为什么不立刻写回呢?
因为:
(1)减少物理IO;
(2)可共享,若后面又有对该块的访问,可直接在内存中进行逻辑读。
图3 访问数据块
小问答:
为什么要通过内存访问数据块,而不是CPU直接访问磁盘呢?
答:因为相较于CPU,IO的速度实在是太慢了,CPU的速度是IO 的100万倍呢?如果CPU直接访问磁盘的话,会造成大量的IO等待,CPU的利用率会很低。所以,利用速度相当的内存(CPU速度为内存的100倍)做中间缓存,可以有效减少物理IO,提高CPU利用率。
但是,这里会有一个问题。前面说到查询或增删改都是对内存中的副本进行操作,当增删改操作产生脏块时不会立刻写回磁盘。
小问答:
我们设想一下,如果在 Database Buffer Cache 中存放大量未来得及写回磁盘的脏块时,突然出现系统故障(比如断电),导致内存中的数据丢失。而此时磁盘中的块存放的依然是修改前的旧数据,这样岂不是导致前面的修改无效?
要怎样保持事务的一致性呢?
答:如果我们能够保存住提交的记录,在 Database Buffer Cache 中一旦有数据更改,马上写入一个地方记录下来,不就可以保证事务一致性了嘛。
小说明:Instance在断电时会消失,Instance在内存中存放的数据将丢失。这就需要 Redo Log Buffer 发挥它的作用啦。
3)Redo Log Buffer
4)Large Pool(可选)
为了进行大的后台进程操作而分配的内存空间,与 shared pool 管理不同,主要用于共享服
务器的 session memory,RMAN 备份恢复以及并行查询等。
5)Java Pool(可选)
为了 java 虚拟机及应用而分配的内存空间,包含所有 session 指定的 JAVA 代码和数据。
6)Stream Pool(可选)
为了 stream process 而分配的内存空间。stream 技术是为了在不同数据库之间共享数据,
因此,它只对使用了 stream 数据库特性的系统是重要的。
Background process
在正式介绍 Background Process 之前,先简单介绍 Oracle 的 Process 类型。
Oracle Process 有三种类型:
客户端要与服务器连接,在客户端启动起来的进程就是 User Process,一般分为三种形式(sql*plus, 应用程序,web 方式(OEM))。
Proses Pengguna tidak boleh mengakses Oracle secara langsung, dan mesti mengakses contoh melalui Proses Pelayan yang sepadan dan kemudian mengakses pangkalan data.
Apabila pengguna log masuk ke Pelayan Oracle, Proses Pengguna dan Proses Pelayan mewujudkan Sambungan.
Satu bahagian penting dalam Instance Oracle. Ini akan diterangkan secara terperinci seterusnya.
Tambahan kecil:
Sambungan & Sesi
Sambungan merujuk kepada sambungan TCP yang ditubuhkan oleh klien Oracle dan latar belakang serta proses latar belakang (Proses Pelayan). Seperti yang ditunjukkan dalam Rajah 4:
Rajah 4 Sambungan
Proses penubuhan sambungan boleh diterangkan secara ringkas seperti berikut:
1 Mula-mula mewujudkan sambungan TCP, Oracle mengesahkan identiti pengguna, menjalankan audit keselamatan, dsb.
2 ;
3 Apabila sambungan Oracle diwujudkan, ini bermakna Sesi dimulakan Apabila sambungan diputuskan, sesi itu hilang.
Sesi dan Sambungan saling melengkapi. Maklumat sesi akan disimpan dalam Kamus Data Oracle.
Anda boleh melihat secara visual perbezaan antara Sambungan dan Sesi melalui Rajah 5.
Rajah 5 Sambungan & Sesi
Proses Latar Belakang terutamanya termasuk: SMON (proses pemantauan sistem), PMON (proses pelayan pemantauan proses), DBWR (proses penulis pangkalan data), LGWR (proses penulis log), CKPT (proses pusat pemeriksaan).
1) PMON (Pemantau Proses)
Fungsi utama PMON adalah seperti berikut:
2) SMON (System Monitor)
Fungsi utama SMON adalah seperti berikut:
DBWn ialah proses kerja yang paling berat dalam Oracle. Fungsi utama adalah seperti berikut:
Tulis blok kotor (Dirty Buffer) dalam Cache Buffer Pangkalan Data ke Fail Data.Jika beban pangkalan data agak besar, terdapat banyak permintaan daripada pelanggan, dan terdapat sejumlah besar operasi IO, kandungan penimbal perlu ditulis ke cakera dengan kerap, maka berbilang DBWn boleh dikonfigurasikan pada masa ini (Oracle menyokong sejumlah 20 DBWn, DBW0-DBW9, DBWa-DBWg). Biasanya Oracle bersaiz kecil dan sederhana hanya memerlukan satu Proses DBW0.
Nota: Apabila situasi berikut berlaku, Proses DBWR akan dicetuskan untuk menulis kandungan Cache Penampan Pangkalan Data ke Fail Data:
Proses pelayan melaksanakan pada fail data Operasi Baca, manakala DBWR bertanggungjawab untuk melaksanakan operasi tulis pada fail data.
Komited? Jawapan: Jangan buat apa-apa!
4) LGWR ((Penulis LOG))
Hanya terdapat satu Proses LGWR dalam Instance Oracle, dan kerja Proses ini adalah serupa dengan Proses DBWR. Fungsi utama adalah seperti berikut:
Tulis kandungan Penampan Log Buat Semula kepada Fail Log Buat Semula (log mesti ditulis sebelum DBWR menulis blok kotor).
(Penimbal Log Buat Semula ialah Penimbal kitaran, dan Fail Log Semula Semula yang sepadan juga merupakan kumpulan fail kitaran. Ia mula menulis dari permulaan fail. Apabila fail penuh, ia akan mula menulis dari permulaan fail. Kandungan sebelumnya ditimpa Untuk mengelakkan daripada menulis ganti Fail Log Semula, anda boleh memilih untuk menulisnya ke Fail Log Semula Arkib)
Nota: Apabila situasi berikut berlaku, LGWR Proses akan dicetuskan kepada Redo Log Kandungan dalam Buffer ditulis kepada Redo Log Files:
Bagaimana untuk memastikan transaksi yang diserahkan dikekalkan secara kekal?
Jawapan: Operasi kemas kini telah dilakukan sebagai contoh.
1. Apabila menulis pernyataan komit, pengubahsuaian telah ditulis kepada Redo Log Buffer
2.
3 . Jadi selepas penyerahan berjaya, perubahan telah disegerakkan ke cakera dan tidak akan hilang.
5) CKPT (Checkpoint)
Fungsi utama CKPT adalah seperti berikut:
6) ARCn (Arkib)
Fungsi utama ARCn adalah seperti berikut:
Apabila Oracle berjalan dalam mod arkib
Dengan cara ini, walaupun pemacu cakera rosak, pangkalan data boleh dipulihkan sehingga tahap kegagalan.
Melalui pembelajaran di atas, mula-mula kemas kini Rajah 1 seperti berikut:
Rajah 6 Seni bina pangkalan data Oracle
Pangkalan data sebenarnya terdiri daripada sekumpulan fail fizikal, terutamanya digunakan untuk menyimpan data Pangkalan data terutamanya mengandungi tiga jenis fail: Fail Data, Fail Kawalan dan Fail Log Buat Semula.
Terdapat juga Fail Parameter, Fail Kata Laluan, Fail Log Tercapai, dsb.
1) Fail Data
Fail Data digunakan untuk menyimpan data dan data dalam Jadual disimpan dalam Fail Data.
2) Fail Kawalan
Oracle menyediakan beberapa Fail Kawalan untuk mengendalikan Fail Data ini terutamanya merekodkan beberapa maklumat kawalan pangkalan data.
3) Buat Semula Fail Log
Buat Semula Fail Log merekodkan perubahan dalam pangkalan data Jika anda memasukkan data ke dalam pangkalan data atau mengubah suai data di dalam, anda hanya perlu membuat perubahan pada pangkalan data data diubahsuai, maka status sebelum pengubahsuaian dan status selepas pengubahsuaian mesti direkodkan dalam Redo Log Files, yang berfungsi untuk memulihkan Fail Data.
* Contohnya: ada transaksi dalam pangkalan data yang perlu dihantar, tetapi penyerahan gagal, transaksi akan digulung semula, maka asas untuk rollback transaksi datang dari Redo Log Files ini. Buat Semula Fail Log merekodkan perubahan pangkalan data Berkenaan perubahan transaksi ini, jika anda perlu melancarkan semula, anda perlu mengeluarkan data dalam Fail Log Buat Semula dan memulihkan Fail Data kepada keadaan sebelum pengubahsuaian mengikut data dalam Fail Log Buat Semula.
4) Fail Parameter
Sebarang pangkalan data mesti mempunyai fail parameter Fail parameter ini menentukan nilai beberapa parameter asas dan parameter permulaan dalam Oracle.
5) Fail Log Diarkibkan
Fail Log Diarkib dan Fail Log Buat Semula saling melengkapi antara satu sama lain . Untuk meningkatkan lagi keupayaan sandaran dan pemulihan pangkalan data, maklumat yang diubah suai ini diarkibkan dalam Fail Log Terarkib sebelum menulis ganti.
6) Fail Kata Laluan
Kata laluan disimpan apabila pelanggan pengguna menyambung ke sistem pangkalan data bahagian belakang.
Soal Jawab Pantas:
Apakah hubungan yang sepadan antara Instance dan Pangkalan Data?
Jawapan: Instance: Database = n: 1
1 Instance hanya boleh dimiliki oleh satu pangkalan data dan berbilang Instans boleh mengakses satu pangkalan data pada masa yang sama.
Tambahan kecil:
Struktur Memori Oracle
Struktur Memori Oracle sebenarnya terdiri daripada dua bahagian: SGA dan PGA
SGA ( Kawasan Global Sistem)
PGA (Kawasan Global Program)
Tutorial yang disyorkan: "Tutorial Video Oracle"
Atas ialah kandungan terperinci Analisis ringkas seni bina Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!