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

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

Jun 07, 2016 pm 03:48 PM
select Ergebnis 语句

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操作为哈希连接、排序等。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Sep 28, 2023 pm 05:27 PM

Asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo mit Golang Einführung: Die gleichzeitige Programmierung ist ein wichtiger Bereich in der modernen Softwareentwicklung, der die Leistung und Reaktionsfähigkeit von Anwendungen effektiv verbessern kann. In der Go-Sprache kann die gleichzeitige Programmierung mithilfe von Channels- und Select-Anweisungen einfach und effizient implementiert werden. In diesem Artikel wird die Verwendung von Golang für die asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo vorgestellt und spezifische Informationen bereitgestellt

So verbergen Sie das ausgewählte Element in jquery So verbergen Sie das ausgewählte Element in jquery Aug 15, 2023 pm 01:56 PM

So verbergen Sie das Select-Element in JQuery: 1. Methode hide (), fügen Sie die jQuery-Bibliothek in die HTML-Seite ein, Sie können verschiedene Selektoren verwenden, um das Select-Element auszublenden, der ID-Selektor ersetzt die SelectId durch die ID des von Ihnen ausgewählten Elements tatsächlich verwenden; 2. css()-Methode, verwenden Sie den ID-Selektor, um das ausgewählte Element auszuwählen, das ausgeblendet werden muss, verwenden Sie die css()-Methode, um das Anzeigeattribut auf „none“ zu setzen, und ersetzen Sie selectId durch die ID des ausgewählten Elements.

So implementieren Sie die Änderungsereignisbindung ausgewählter Elemente in jQuery So implementieren Sie die Änderungsereignisbindung ausgewählter Elemente in jQuery Feb 23, 2024 pm 01:12 PM

jQuery ist eine beliebte JavaScript-Bibliothek, die zur Vereinfachung der DOM-Manipulation, Ereignisbehandlung, Animationseffekte usw. verwendet werden kann. Bei der Webentwicklung stoßen wir häufig auf Situationen, in denen wir die Ereignisbindung für ausgewählte Elemente ändern müssen. In diesem Artikel wird erläutert, wie Sie mit jQuery ausgewählte Elementänderungsereignisse binden, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir ein Dropdown-Menü mit Optionen erstellen, die Beschriftungen verwenden:

Was ist der Grund, warum Linux select verwendet? Was ist der Grund, warum Linux select verwendet? May 19, 2023 pm 03:07 PM

Da Select es Entwicklern ermöglicht, gleichzeitig auf mehrere Dateipuffer zu warten, kann dies die E/A-Wartezeit verkürzen und die E/A-Effizienz des Prozesses verbessern. Die Funktion select() ist eine E/A-Multiplexfunktion, die es dem Programm ermöglicht, mehrere Dateideskriptoren zu überwachen und darauf zu warten, dass einer oder mehrere der überwachten Dateideskriptoren „bereit“ werden. Bezieht sich auf: die Datei Der Deskriptor ist nicht mehr blockiert und kann für bestimmte Arten von E/A-Vorgängen verwendet werden, einschließlich lesbarer, beschreibbarer und Ausnahmen. select ist eine Computerfunktion, die sich in der Header-Datei #include befindet. Diese Funktion wird verwendet, um Dateideskriptoränderungen zu überwachen – Lesen, Schreiben oder Ausnahmen. 1. Einführung in die Auswahlfunktion Die Auswahlfunktion ist eine E/A-Multiplexfunktion.

So verwenden Sie die Select-Syntax von MySQL So verwenden Sie die Select-Syntax von MySQL Jun 01, 2023 pm 07:37 PM

1. Bei Schlüsselwörtern in SQL-Anweisungen wird die Groß-/Kleinschreibung nicht beachtet. SELECT entspricht SELECT und FROM entspricht from. 2. Um alle Spalten aus der Benutzertabelle auszuwählen, können Sie den Spaltennamen durch das Symbol * ersetzen. Syntax – Dies ist ein Kommentar – Abfrage [alle] Daten aus der durch FEOM angegebenen [Tabelle] * bedeutet [alle Spalten] SELECT*FROM – Abfrage der angegebenen [Tabelle] aus FROM Daten des Spaltennamens (Feld) SELECT Spaltenname FROM Tabellennamensinstanz – Hinweis: Verwenden Sie englische Kommas, um mehrere Spalten zu trennen. Wählen Sie Benutzername und Passwort aus

Implementieren Sie Select Channels Go zur Optimierung der gleichzeitigen Programmierleistung durch Golang Implementieren Sie Select Channels Go zur Optimierung der gleichzeitigen Programmierleistung durch Golang Sep 27, 2023 pm 01:09 PM

Implementieren von SelectChannels durch Golang Leistungsoptimierung der gleichzeitigen Go-Programmierung In der Go-Sprache ist es sehr üblich, Goroutine und Channel zum Implementieren der gleichzeitigen Programmierung zu verwenden. Wenn wir mit mehreren Kanälen arbeiten, verwenden wir normalerweise Select-Anweisungen zum Multiplexen. Bei großer Parallelität kann die Verwendung von Select-Anweisungen jedoch zu Leistungseinbußen führen. In diesem Artikel stellen wir einige Implementierungen von select über Golang vor

Wählen Sie Channels Go-Parallelprogrammierung für Zuverlässigkeit und Robustheit mit Golang aus Wählen Sie Channels Go-Parallelprogrammierung für Zuverlässigkeit und Robustheit mit Golang aus Sep 28, 2023 pm 05:37 PM

SelectChannels für Zuverlässigkeit und Robustheit mithilfe von Golang Einführung in die gleichzeitige Programmierung: In der modernen Softwareentwicklung ist Parallelität zu einem sehr wichtigen Thema geworden. Durch die Verwendung gleichzeitiger Programmierung können Programme schneller reagieren, Rechenressourcen effizienter nutzen und große parallele Rechenaufgaben besser bewältigen. Golang ist eine sehr leistungsfähige gleichzeitige Programmiersprache. Sie bietet eine einfache und effektive Möglichkeit, gleichzeitige Programmierung durch Go-Coroutinen und Kanalmechanismen zu implementieren.

Multi-Catch-Anweisung in PHP8.0 Multi-Catch-Anweisung in PHP8.0 May 14, 2023 pm 01:51 PM

Mit der Entwicklung von Webanwendungen wurde die PHP-Sprache in großem Umfang in der Webentwicklung eingesetzt. In der PHP8.0-Version wurde eine neue Sprachfunktion eingeführt – die Multi-Catch-Anweisung. Was ist eine Multi-Catch-Anweisung? In früheren PHP-Versionen mussten Entwickler mehrere Catch-Anweisungen schreiben, um mehrere Ausnahmetypen zu behandeln. Der folgende Codeblock zeigt beispielsweise die Behandlung von zwei verschiedenen Ausnahmen: try{//Somecodethatmay

See all articles