DB2内存使用过高优化
最近在在做DB2的benchmark,发现数据库的内存占用特别高,因为是做benchmark测试,所以表并不多,并且主要是针对其中的一张表做测
最近在在做DB2的benchmark,发现数据库的内存占用特别高,因为是做benchmark测试,所以表并不多,并且主要是针对其中的一张表做测试,当这张表的数据快到1亿的时候,用top查询系统状态如下
# top
top - 20:06:34 up 5 days, 22:20, 12 users, load average: 18.53, 6.57, 3.19
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32458 db2inst 20 0 42.3g 27g 27g S 63.7 44.3 0:27.13 db2sysc 0
...
其中db2sync进程用了27G的内存,从而导致系统物理内存几乎被用光并且系统也变的非常慢。
使用db2mtrk命令来查看db2的内存使用情况,如下:
# db2mtrk -i -d -v
Tracking Memory on: 2014/06/22 at 21:50:19
Memory for instance
Other Memory is of size 63111168 bytes
FCMBP Heap is of size 851968 bytes
Database Monitor Heap is of size 983040 bytes
Total: 64946176 bytes
Memory for database: PA913
Backup/Restore/Util Heap is of size 65536 bytes
Package Cache is of size 262144 bytes
Other Memory is of size 196608 bytes
Catalog Cache Heap is of size 262144 bytes
Buffer Pool Heap (1) is of size 24465047552 bytes
Buffer Pool Heap (System 32k buffer pool) is of size 1835008 bytes
Buffer Pool Heap (System 16k buffer pool) is of size 1572864 bytes
Buffer Pool Heap (System 8k buffer pool) is of size 1441792 bytes
Buffer Pool Heap (System 4k buffer pool) is of size 1376256 bytes
Shared Sort Heap is of size 0 bytes
Lock Manager Heap is of size 3881172992 bytes
Database Heap is of size 94830592 bytes
Application Heap (47) is of size 131072 bytes
Application Heap (45) is of size 65536 bytes
Application Heap (44) is of size 65536 bytes
Application Heap (43) is of size 65536 bytes
Application Heap (42) is of size 65536 bytes
Application Heap (41) is of size 65536 bytes
Application Heap (40) is of size 65536 bytes
Application Heap (39) is of size 65536 bytes
Application Heap (38) is of size 65536 bytes
Application Heap (37) is of size 65536 bytes
Application Heap (36) is of size 65536 bytes
Application Heap (35) is of size 65536 bytes
Application Heap (34) is of size 65536 bytes
Application Heap (33) is of size 65536 bytes
Application Heap (32) is of size 65536 bytes
Application Heap (31) is of size 65536 bytes
Application Heap (30) is of size 65536 bytes
Application Heap (29) is of size 65536 bytes
Application Heap (28) is of size 65536 bytes
Application Heap (27) is of size 65536 bytes
Application Heap (26) is of size 65536 bytes
Application Heap (25) is of size 65536 bytes
Application Heap (24) is of size 65536 bytes
Application Heap (23) is of size 65536 bytes
Application Heap (22) is of size 65536 bytes
Application Heap (21) is of size 65536 bytes
Application Heap (20) is of size 65536 bytes
Application Heap (19) is of size 65536 bytes
Application Heap (18) is of size 65536 bytes
Application Heap (17) is of size 65536 bytes
Application Heap (16) is of size 65536 bytes
Application Heap (15) is of size 65536 bytes
Application Heap (14) is of size 65536 bytes
Application Heap (13) is of size 65536 bytes
Application Heap (12) is of size 65536 bytes
Application Heap (11) is of size 196608 bytes
Application Heap (10) is of size 65536 bytes
Application Heap (9) is of size 65536 bytes
Application Heap (8) is of size 65536 bytes
Application Heap (7) is of size 131072 bytes
Applications Shared Heap is of size 393216 bytes
Total: 28451340288 bytes
其中重点是“Memory for database: PA913”下的“Buffer Pool Heap (1) is of size 24465047552 bytes”,用了近25G的内存,由于我确定我的数据库中的数据量不是很大,所以减少数据库内存就是我的首选了。
查了一下资料,可以通过修改database_memory系统参数来设置数据库内存的使用。默认情况下database_memory的设置是AUTOMATIC,这里可以通过下面的命令来修改参数,,修改完后要重新启动db2
$ db2 update db cfg for
$ db2stop force
$ db2start
数据库重启后,先用客户端连接一下数据库,然后再使用“db2mtrk -i -d -v”查看内存使用情况,就发现内存就会有明显的下降。用top查看结果也类似。
在真实的DB2使用情况下,修改这个值是需要慎重的,可以参考下面列出的参考资料。
本文永久更新链接地址:

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)

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

La méthode pour résoudre le problème de fermeture du curseur Oracle comprend: la fermeture explicite du curseur à l'aide de l'instruction Close. Déclarez le curseur dans la clause de mise à jour pour la fermeture automatiquement après la fin de la portée. Déclarez le curseur dans la clause d'utilisation afin qu'il se ferme automatiquement lorsque la variable PL / SQL associée est fermée. Utilisez la gestion des exceptions pour vous assurer que le curseur est fermé dans toute situation d'exception. Utilisez le pool de connexion pour fermer automatiquement le curseur. Désactiver la soumission automatique et le délai de fermeture du curseur.

Les instructions SQL peuvent être créées et exécutées en fonction de l'entrée d'exécution en utilisant Dynamic SQL d'Oracle. Les étapes comprennent: la préparation d'une variable de chaîne vide pour stocker des instructions SQL générées dynamiquement. Utilisez l'instruction EXECUTER IMMÉDIATE OU PRÉPEPART pour compiler et exécuter les instructions SQL dynamiques. Utilisez la variable Bind pour passer l'entrée utilisateur ou d'autres valeurs dynamiques à Dynamic SQL. Utilisez EXECUTER immédiat ou exécuter pour exécuter des instructions SQL dynamiques.

Dans Oracle, la boucle pour la boucle pour créer des curseurs dynamiquement. Les étapes sont: 1. Définissez le type de curseur; 2. Créez la boucle; 3. Créez le curseur dynamiquement; 4. Exécuter le curseur; 5. Fermez le curseur. Exemple: un curseur peut être créé de cycle par circuit pour afficher les noms et salaires des 10 meilleurs employés.

Les solutions à Oracle ne peuvent pas être ouvertes comprennent: 1. Démarrer le service de base de données; 2. Commencez l'auditeur; 3. Vérifiez les conflits portuaires; 4. Définir correctement les variables d'environnement; 5. Assurez-vous que le pare-feu ou le logiciel antivirus ne bloque pas la connexion; 6. Vérifiez si le serveur est fermé; 7. Utilisez RMAN pour récupérer les fichiers corrompus; 8. Vérifiez si le nom du service TNS est correct; 9. Vérifier la connexion réseau; 10. Réinstaller le logiciel Oracle.

Un rapport AWR est un rapport qui affiche les performances de la base de données et les instantanés d'activité. Les étapes d'interprétation comprennent: l'identification de la date et de l'heure de l'instantané d'activité. Consultez un aperçu des activités et de la consommation de ressources. Analyser les activités de session pour trouver des types de session, la consommation de ressources et les événements d'attente. Trouvez des goulots d'étranglement potentiels de performance tels que des instructions SQL lentes, des problèmes de ressources et des problèmes d'E / S. Affichez les événements d'attente, identifiez-les et résolvez-les pour les performances. Analyser les modèles d'utilisation des verrous et de la mémoire pour identifier les problèmes de mémoire qui causent des problèmes de performances.

Les déclencheurs d'Oracle sont des procédures stockées utilisées pour effectuer automatiquement des opérations après un événement spécifique (insérer, mettre à jour ou supprimer). Ils sont utilisés dans une variété de scénarios, notamment la vérification des données, l'audit et la maintenance des données. Lors de la création d'un déclencheur, vous devez spécifier le nom de déclenchement, la table d'association, l'événement de déclenchement et le temps de déclenchement. Il existe deux types de déclencheurs: le déclencheur avant est tiré avant l'opération, et le déclencheur après est tiré après l'opération. Par exemple, le déclencheur avant l'insertion garantit que la colonne d'âge de la ligne insérée n'est pas négative.
