Rumah pangkalan data tutorial mysql select语句的结果集可能会存放在pga的UGA区域以及对DML语句中的d

select语句的结果集可能会存放在pga的UGA区域以及对DML语句中的d

Jun 07, 2016 pm 03:48 PM
select hasil kenyataan

select语句的结果集可能会存放在pga的UGA区域 问: oracle执行select操作,返回的结果集存放在什么位置?结果集中保存的是rowid集合还是真实的数据?返回的结果集是放在PGA区域么?如果返回的是真实的数据,那么如果数据量过大会不会造成内存溢出?请各位高

select语句的结果集可能会存放在pga的UGA区域

问:oracle执行select操作,返回的结果集存放在什么位置?结果集中保存的是rowid集合还是真实的数据?返回的结果集是放在PGA区域么?如果返回的是真实的数据,那么如果数据量过大会不会造成内存溢出?请各位高手解答


答:

If it's a simple select * from table, the data goes straight to the client. If the SQL has some intermediate steps for data processing,such as select count(*) from table, UGA will be used. In dedicated config, UGA is part of PGA.


Of course the data blocks will be scanned into SGA (buffer cache specifically), unless it's a direct path read. Your original question is whether the data will be in PGA. I already answered that. But no matter whether it's select *... or select count(*) ..., the table data must go to the buffer cache first (except for parallel read, and a few other special cases of direct path read).

Yong Huang

即对于直接获取的数据,没有必要额外存放,数据已经在那里(buffer cache, logical read/disk,phisical read logical read)
对于中间结果,例如Huang版说的,或者,排序结果、数组之类的,应该在PGA或磁盘中



参考:

http://www.itpub.net/thread-1505871-1-1.html


谷歌    select语句结果集 pga

==================================================================================================================================

对DML语句中的db block gets direct理解

问:

从v$sysstat中可以看到db block gets由db block gets from cache和db block gets direct构成.

前者很好理解,后者的含义是:"Number of times a CURRENT block was requested bypassing the buffer cache"

那么为什么要bypassing the buffer cache呢?

是因为在buffer cache中找不到吗?如果是因为在buffer cache中找不到,所以才bypassing buffer cache而到磁盘上找,那么db block gets direct的数量 + consistent gets direct的数量,就应该等于physical reads的数量,但实际确非如此,为什么呢?谢谢


答:

buffer cache的目的是什么呢?
如果你需要读取的block不适合,设buffer cache的目的甚至违背了其初衷。
那是不是应该bypassing buffer cache呢?

也就是说,一般情况下,要读一个block,都是“应该先到buffer cache中去找,找不到再从磁盘上找到,并先放到buffer cache中,以备下次需要时能直接从buffer cache中找到”的。
但是,有时候数据会被读到PGA中的,即如果大量数据要被读入,而且不会复用,那么读到buffer cache中就不合适了。


问:

  这个bypassing buffer cache,是说的直接bypassing buffer cache,直接到磁盘上找; 还是说先到buffer cache中找不到而被迫到磁盘上找,然后找出来的block不放到buffer cache中去呢?
答:bypassing buffer cache直接到磁盘上找。

疑问:

关于db block gets direct
db block gets from cache是buffer cache中的current mode gets,

那么db block gets direct应该是pga中的current mode gets吧?

(执行DML语句时发生db block gets direct,则数据文件上的数据块直接存放到pga上的,所以应该是如此吧)
没有找到正式的说法



参考:

http://www.itpub.net/forum.php?mod=viewthread&tid=963118&highlight=

百度  db block gets direct

http://blog.itpub.net/7608831/viewspace-693190/                                      =

http://oracle.zwcoom.com/Oracle/Oracleguanli/20100312/143435.html


附加


1.3 CGA(调用全局区)的相关概念

CGA也是一块内存区域,但它是动态的,即随着调用(call)的开始而创建,在调用过程中一直存在,直到调用结束时被释放它存放的是在调用过程中所需要的数据

我们知道,调用主要包括解析(parse)调用、执行(executive)调用、获取(fetch)调用以及递归SQL调用和PL/SQL调用。从调用的种类可以看出,实际上在调用过程中所需要的数据,比如SQL AREAPL/SQL AREASORT AREA基本都是放在UGA的,因为这些数据在各个调用之间必须一直存在并可用。而CGA只存放了在调用过程中临时需要的数据,比如直接I/O缓存(Direct I/O Buffer以及堆栈空间等数据结构。因此,没有CGA中的数据结构,调用是无法完成的。

注意,CGA不象UGA可以位于SGA中(以共享服务器模式连接),CGA一定是位于PGA中的。如果当前进程正在运行,则每个PGA中只有一个CGA如果当前进程没有运行,则该进程的PGA中就没有CGA

上述说明,sql语句并行化查询时,产生的direct path read,是将数据文件上的数据读取到的pga上的cga这个区域的。


SQL操作指的不是一条SQL语句,而是其中的一个操作。如,需要sql工作区的SQL操作为哈希连接、排序等。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kaedah pemprosesan tak segerak bagi pengaturcaraan serentak Select Channels Go menggunakan golang Kaedah pemprosesan tak segerak bagi pengaturcaraan serentak Select Channels Go menggunakan golang Sep 28, 2023 pm 05:27 PM

Kaedah pemprosesan tak segerak bagi pengaturcaraan serentak SelectChannelsGo menggunakan golang Pengenalan: Pengaturcaraan serentak ialah bidang penting dalam pembangunan perisian moden, yang boleh meningkatkan prestasi dan responsif aplikasi dengan berkesan. Dalam bahasa Go, pengaturcaraan serentak boleh dilaksanakan dengan mudah dan cekap menggunakan penyataan Saluran dan Pilih. Artikel ini akan memperkenalkan cara menggunakan golang untuk kaedah pemprosesan tak segerak bagi pengaturcaraan serentak SelectChannelsGo dan menyediakan khusus

Bagaimana untuk menyembunyikan elemen pilih dalam jquery Bagaimana untuk menyembunyikan elemen pilih dalam jquery Aug 15, 2023 pm 01:56 PM

Bagaimana untuk menyembunyikan elemen pilih dalam jquery: 1. kaedah hide(), memperkenalkan perpustakaan jQuery ke dalam halaman HTML, anda boleh menggunakan pemilih yang berbeza untuk menyembunyikan elemen pilih, pemilih ID menggantikan selectId dengan ID elemen pilih yang anda sebenarnya gunakan; 2. kaedah css(), gunakan pemilih ID untuk memilih elemen pilih yang perlu disembunyikan, gunakan kaedah css() untuk menetapkan atribut paparan kepada tiada, dan gantikan selectId dengan ID elemen pilih.

Bagaimana untuk melaksanakan pengikatan peristiwa perubahan bagi elemen terpilih dalam jQuery Bagaimana untuk melaksanakan pengikatan peristiwa perubahan bagi elemen terpilih dalam jQuery Feb 23, 2024 pm 01:12 PM

jQuery ialah perpustakaan JavaScript popular yang boleh digunakan untuk memudahkan manipulasi DOM, pengendalian acara, kesan animasi, dll. Dalam pembangunan web, kami sering menghadapi situasi di mana kami perlu menukar pengikatan acara pada elemen terpilih. Artikel ini akan memperkenalkan cara menggunakan jQuery untuk mengikat acara perubahan elemen terpilih, dan memberikan contoh kod khusus. Pertama, kita perlu mencipta menu lungsur dengan pilihan menggunakan label:

Apakah sebab mengapa Linux menggunakan pilih? Apakah sebab mengapa Linux menggunakan pilih? May 19, 2023 pm 03:07 PM

Oleh kerana pilih membenarkan pembangun menunggu beberapa penimbal fail pada masa yang sama, ia boleh mengurangkan masa menunggu IO dan meningkatkan kecekapan IO proses. Fungsi select() ialah fungsi pemultipleksan IO yang membolehkan program memantau berbilang deskriptor fail dan menunggu satu atau lebih deskriptor fail yang dipantau menjadi "sedia" yang dipanggil keadaan "bersedia" ialah Merujuk kepada: fail deskriptor tidak lagi disekat dan boleh digunakan untuk jenis operasi IO tertentu, termasuk boleh dibaca, boleh ditulis dan pengecualian. pilih ialah fungsi komputer yang terletak dalam fail pengepala #include. Fungsi ini digunakan untuk memantau perubahan deskriptor fail—membaca, menulis atau pengecualian. 1. Pengenalan kepada fungsi pilih Fungsi pilih ialah fungsi pemultipleksan IO.

Bagaimana untuk menggunakan sintaks pilihan mysql Bagaimana untuk menggunakan sintaks pilihan mysql Jun 01, 2023 pm 07:37 PM

1. Kata kunci dalam pernyataan SQL tidak peka huruf besar-kecil SELECT bersamaan dengan SELECT dan FROM bersamaan dengan from. 2. Untuk memilih semua lajur daripada jadual pengguna, anda boleh menggunakan simbol * untuk menggantikan nama lajur. Sintaks--ini ialah ulasan--pertanyaan keluar [semua] data daripada [jadual] yang ditentukan oleh FEOM * bermaksud [semua lajur] SELECT*FROM--pertanyaan keluar data yang ditentukan daripada [jadual] yang ditentukan daripada Data daripada. nama lajur (medan) PILIH nama lajur DARI contoh nama jadual--Nota: Gunakan koma Inggeris untuk memisahkan berbilang lajur pilih nama pengguna, kata laluan daripada

Laksanakan Select Channels Go pengoptimuman prestasi pengaturcaraan serentak melalui golang Laksanakan Select Channels Go pengoptimuman prestasi pengaturcaraan serentak melalui golang Sep 27, 2023 pm 01:09 PM

Melaksanakan SelectChannels melalui golang Pengoptimuman prestasi pengaturcaraan serentak Go Dalam bahasa Go, adalah perkara biasa untuk menggunakan goroutine dan saluran untuk melaksanakan pengaturcaraan serentak. Apabila berurusan dengan berbilang saluran, kami biasanya menggunakan penyata pilihan untuk pemultipleksan. Walau bagaimanapun, dalam kes konkurensi berskala besar, menggunakan pernyataan terpilih boleh menyebabkan kemerosotan prestasi. Dalam artikel ini, kami akan memperkenalkan beberapa pelaksanaan pilih melalui golang

Pilih Channels Go pengaturcaraan serentak untuk kebolehpercayaan dan keteguhan menggunakan golang Pilih Channels Go pengaturcaraan serentak untuk kebolehpercayaan dan keteguhan menggunakan golang Sep 28, 2023 pm 05:37 PM

SelectChannels for Reliability and Robustness using Golang Pengenalan kepada Concurrent Programming: Dalam pembangunan perisian moden, concurrency telah menjadi topik yang sangat penting. Menggunakan pengaturcaraan serentak boleh menjadikan atur cara lebih responsif, menggunakan sumber pengkomputeran dengan lebih cekap dan lebih berupaya mengendalikan tugas pengkomputeran selari berskala besar. Golang ialah bahasa pengaturcaraan serentak yang sangat berkuasa Ia menyediakan cara yang mudah dan berkesan untuk melaksanakan pengaturcaraan serentak melalui coroutine dan mekanisme saluran.

kenyataan berbilang tangkapan dalam PHP8.0 kenyataan berbilang tangkapan dalam PHP8.0 May 14, 2023 pm 01:51 PM

Dengan perkembangan aplikasi web, bahasa PHP telah digunakan secara meluas dalam pembangunan web. Dalam versi PHP8.0, ciri bahasa baharu telah diperkenalkan - pernyataan multi-catch. Apakah pernyataan berbilang tangkapan? Dalam versi PHP sebelumnya, pembangun perlu menulis berbilang kenyataan tangkapan untuk mengendalikan berbilang jenis pengecualian. Sebagai contoh, blok kod berikut menunjukkan pengendalian dua pengecualian berbeza: cuba{//Somecodethatmay

See all articles