latch:librarycache等待(只存在于9i,10g)
latch: library cache等待(只存在于9i,10g) SQL-ASCII-Hash_value-hash bucket,然后申请保护该bucket的library cache latch(3-67个latch保护成千上万个hash bucket),这个latch是为了保护会话在检索bucket对应的hash chain的过程中,hash chain结构不被改
latch: library cache等待(只存在于9i,10g) SQL->ASCII->Hash_value值->hash bucket,然后申请保护该bucket的library cache latch(3-67个latch保护成千上万个hash bucket),这个latch是为了保护会话在检索bucket对应的hash chain的过程中,hash chain结构不被改变。 在chain上会挂着一串父cursor头的指针,每检索到一个指针,就到所指向的内存区,去看这个父cursor是否符合(sql文本是否相同),chain发现相应父cursor后,再寻觅里面的子cursor,找到可重复利用的综合型计划等信息,就会释放latch,这个过程叫软解析。 假如没有找到可重复利用的cursor,就要hard parsing了。先释放library cache latch,获得shared pool latch锁存器,检索并分配可用的chunk,然后释放shared pool latch,这些chunk就算是进入library cache中了。然后查询优化器生成执行计划,并存到相应chunk上。再次获得library cache latch,然后将这些chunk挂到hash chain上。若在library cache latch获得发生争用,就须等待latch: library cache事件。然后SQL才开始执行,此时转入library cache pin+lock(null模式) select value from v$parameter where name='cpu_count'; --32个cpu select rownum,name,gets from v$latch_children where name like '%library%'; --37个library cache 子锁存器,一般认为子锁存器数量是比cpu_count大的最小质数值,可以被 _KGL_LATCH_COUNT 参数控制 原因: 1.hard parsing或soft parsing过多,硬解析时除了检索library cache的hash chain费时间,还得花时间额外分配chunk。就算是仅有软解析,也会发生争用,因为其还有语法检查语义检查、库高速缓冲区检索这些过程,在这些过程中也得先获得library cache latch。这个等待伴随shared pool latch等待就是硬解析过多(因为要分配chunk),没有后者就应该仅是软解释过多。
2.High Versions Count,子游标过多,v$sqlarea的version_count字段显示有多少个子游标,或者v$sql的child_number字段,从0开始算的。bucket->hash chain->检索到这个文本对应的cursor,还得检索这个父cursor下面的几个子cursor,例如不同用户发出的相同sql就会有一样的父cursor,此时获得library cache latch的时间会延长。 High version counts can easily cause high contention for library cache latches. A process parsing a SQL statement with many versions (children cursors) will need to scan through all these children while holding on to a library cache latch. This means that other processes needing the same latch will have to wait and can lead to significant database-wide performance degradation. 3.SGA区发生OS层面的page out,
解决: 1.要使用绑定变量减少硬解析,软解释最好也设法减少,例如应用上用缓存等。 2.session_cached_cursors参数默认为0,设为50以上比较好。设定了该值后Oracle将执行三次以上的SQL Cursor信息保存到PGA内,信息包括SQL文本与对于库高速缓存的指针值。用户一旦提交SQL,首先看PGA,存在的话直接跳到library cache的cursor那。所以这个参数是softer soft parse,软解析的软解析。因为这个参数针对会话,所以维持会话的连接性才能有效,例如配置中间件连接池。itpub的vage说,软软解析时,10.2.0.1中有,10.2.0.2--10.2.0.4没有,到10.2.0.5又有了。到11G又没了,搞不明白Oracle是咋想的。 3.HP_UX,AIX用LOCK_SGA参数设为true(默认false),SunOS用_USE_ISM参数设为true(默认true)。
后续: 11g,这个等待事件library cache: mutex X就是早期的latch: library cache等待。10g后很多latch用mutex代替。_kks_use_mutex_pin=false可以禁止mutex)

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Selon les informations du 30 juin, les modèles de la série L de Li Auto, dont L7, L8 et L9, ont réalisé des résultats de ventes considérables dans leurs gammes de prix respectives. Cependant, selon la compréhension de l'éditeur, Li Auto espère augmenter encore ses ventes et se concentre sur les performances d'une autre nouvelle voiture, la Li Li L6. Récemment, un blogueur aurait photographié une voiture Ideal L6 camouflée dans une aire de service autoroutière. D'après les photos prises par le blogueur, la voiture camouflée soupçonnée être la Lili L6 ne roule pas normalement, mais est garée sur une remorque. Comparé au SUV Weilai blanc à côté, même en tant que modèle le plus bas de la série L, le Lideal L6 semble être assez grand. Il est rapporté que le Lili L6 se positionne comme un SUV cinq places de taille moyenne. Bien que ces photos ne fournissent pas beaucoup d'informations sur les détails de l'apparence,

PHP envoie des emails de manière asynchrone : évitez les longues attentes pour l'envoi des emails. Introduction : Dans le développement Web, l'envoi d'e-mails est l'une des fonctions courantes. Cependant, comme l’envoi d’e-mails nécessite une communication avec le serveur, cela oblige souvent les utilisateurs à attendre longtemps avant que l’e-mail soit envoyé. Afin de résoudre ce problème, nous pouvons utiliser PHP pour envoyer des e-mails de manière asynchrone afin d'optimiser l'expérience utilisateur. Cet article présentera comment implémenter PHP pour envoyer des e-mails de manière asynchrone à travers des exemples de code spécifiques et éviter de longues attentes. 1. Comprendre l'envoi d'e-mails de manière asynchrone

La fonction principale du langage Go attendra-t-elle ? Exploration et analyse Dans le langage Go, la fonction principale est le point d'entrée du programme et est chargée de démarrer l'exécution du programme. De nombreux débutants ne savent pas si la fonction principale du langage Go attendra que d'autres goroutines du programme terminent son exécution. Cet article approfondira ce problème et l'expliquera à travers des exemples de code spécifiques. Tout d’abord, il doit être clair que la fonction principale du langage Go n’attend pas que d’autres parties du programme terminent son exécution comme la fonction principale de certains autres langages de programmation. La fonction principale n'est que le point de départ du programme lorsque la fonction principale.

Synchronisation des threads en Java : analyse des principes de fonctionnement des méthodes wait et notify Dans la programmation multithread Java, la synchronisation entre les threads est un concept très important. Dans le développement réel, nous devons souvent contrôler la séquence d'exécution et l'accès aux ressources entre plusieurs threads. Afin de réaliser la synchronisation des threads, Java fournit des méthodes d'attente et de notification. Les méthodes wait et notify sont deux méthodes de la classe Object. Elles sont implémentées à l'aide du mécanisme de surveillance en Java.

Linux est un système d'exploitation puissant doté de nombreuses commandes et astuces utiles pour vous aider à l'utiliser plus efficacement. 1. Vérifiez la valeur de contrôle du fichier Pendant le processus de copie ou de transmission du fichier, le fichier peut être endommagé ou modifié. Dans ce cas, la valeur de contrôle peut être utilisée pour la vérification. Habituellement, nous devons utiliser certains programmes d'interface fournis par d'autres équipes dans notre travail. Chaque fois que les résultats d'exécution de ces programmes ne sont pas ceux attendus, nous comparerons les valeurs de contrôle md5 des deux parties pour confirmer la cohérence des données. Il existe de nombreuses façons de générer la valeur de contrôle d'un fichier. Les méthodes couramment utilisées incluent la vérification md5sum, la vérification crc, la vérification de somme, etc. Les commandes sont : md5sumfile_namecksumfile_namesum fichier de paramètres d'algorithme

Dans le monde de la programmation informatique, trouver le nombre de nombres dans une plage donnée qui est premier par rapport à un nombre spécifique peut être une tâche courante. Les nombres relativement premiers, également appelés nombres premiers relatifs, sont des nombres qui n'ont pas de facteur commun autre que 1. Dans cet article, nous explorerons la recherche du nombre de nombres relativement premiers par rapport à un nombre spécifique P entre les entiers donnés L et R en utilisant le langage C++. Syntaxe Nous allons d'abord décrire la syntaxe de la méthode que nous utiliserons dans les exemples de code suivants - intcountCoprimes(intL,intR,intP); Algorithme L'algorithme que nous utiliserons pour compter le nombre de nombres premiers est le suivant - Initialisez le nombre de variables comme 0, utilisé pour stocker le nombre de nombres relativement premiers. Parcourez chaque numéro num en commençant par L jusqu'à R. pour chacun

La raison de l'erreur est qu'en python, l'erreur "ParseException(s,l,str(ve))" dans pip est généralement causée par une version de pip trop basse ou par un problème de connexion réseau. Vous pouvez essayer de mettre à jour la version pip ou vérifier la connexion réseau. Comment résoudre Voici quelques façons de résoudre cette erreur : Mettre à jour pip : utilisez la commande « Python-mpipinstall --upgradepip » pour mettre à jour la version pip Vérifiez la connexion réseau : assurez-vous que la connexion réseau est stable et peut accéder à pypi.org Utiliser un proxy : si votre réseau nécessite un proxy, veuillez définir le proxy dans la ligne de commande, par exemple : pipinstall --proxyHttp://pro

Microsoft a lancé Windows 11, un nouveau système six ans après Windows 10. De nombreux utilisateurs attendent avec impatience ce nouveau système. Cependant, certains utilisateurs sont toujours troublés. Ils ne savent pas s'il faut acheter un système win10 ou attendre un système win11. Suivez ensuite l'éditeur pour comprendre les différences entre eux. Peut-être aurez-vous déjà la réponse en tête après avoir lu ceci. . 1. Menu Démarrer : icônes simples, pas de vignettes dynamiques Le menu Démarrer de Win11 est sans aucun doute un changement majeur par rapport aux raccourcis d'application en mosaïque de Win10 (à partir de Win8). Le menu Démarrer se trouve par défaut au centre du bureau de votre PC, de la même manière que le menu Démarrer de Win10X aurait très bien fonctionné s'il avait déjà été lancé. en W
