<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - PostgreSQL</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL]]></description>
		<language>fr</language>
		<lastBuildDate>Mon, 13 Apr 2026 14:30:07 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - PostgreSQL</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Problème PostgreS avec Windows 11 24H2</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182994&amp;goto=newpost</link>
			<pubDate>Thu, 02 Apr 2026 13:28:05 GMT</pubDate>
			<description><![CDATA[Bonjour 
 
J'ai installé...]]></description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
J'ai installé postgresql 18 sous windows 11 normal, tout marchait bien pgadmin s'ouvrait rapidement, mais une fois que la mise à jour WINDOWS 24H2 a été installée, rien ne fonctionnait plus, pgadmin restait planté, et j'ai même essayé de me connecter à la BDD via DBeaver, mais sans succès.<br />
Alors j'ai desactivé le firewall, l'antivirus, j'ai ouvert le port 5432 dans le firewall, windows defender, ... etc , j'ai même changé de port, rien ne fonctionne.<br />
<br />
J'ai désinstallé la mise à jour 24H2, et tout est à nouveau fonctionnel (pgadmin et même DBeaver), <br />
<br />
c'est quoi le problème de cette mise à jour?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f89/bases-donnees/postgresql/">PostgreSQL</category>
			<dc:creator>scholes</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182994/bases-donnees/postgresql/probleme-postgres-windows-11-24h2/</guid>
		</item>
		<item>
			<title>Débuter avec Pgbench</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182671&amp;goto=newpost</link>
			<pubDate>Mon, 16 Mar 2026 13:29:52 GMT</pubDate>
			<description>bonjour, 
 
Je suis perdu...</description>
			<content:encoded><![CDATA[<div>bonjour,<br />
<br />
Je suis perdu pour utiliser pgbench ?<br />
On trouve des tuto, mais c'est des lignes de commandes et souvent c'est pour des install sur Linux<br />
<br />
Je ne connais que Pgadmin, j'ai ouvert l'outil PSQL et je tape <b>pgbench -i nom_base</b>, pour créér les tables, mais il ne se passe rien ?<br />
<br />
<br />
Cordialement</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f89/bases-donnees/postgresql/">PostgreSQL</category>
			<dc:creator>looping</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182671/bases-donnees/postgresql/debuter-pgbench/</guid>
		</item>
		<item>
			<title><![CDATA[Mise à l'échelle de PostgreSQL pour prendre en charge 800 millions d'utilisateurs ChatGPT]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181748&amp;goto=newpost</link>
			<pubDate>Tue, 27 Jan 2026 09:53:28 GMT</pubDate>
			<description><![CDATA[*Mise à l'échelle de...]]></description>
			<content:encoded><![CDATA[<div><b><font size="4">Mise à l'échelle de PostgreSQL pour prendre en charge 800 millions d'utilisateurs ChatGPT, par Bohan Zhang</font></b><br />
<br />
PostgreSQL, également connu sous le nom de Postgres, est un système de gestion de base de données relationnelle (SGBDR) libre et open source qui met l'accent sur l'extensibilité et la conformité SQL. PostgreSQL offre des transactions avec des propriétés d'atomicité, de cohérence, d'isolation et de durabilité (ACID), des vues automatiquement actualisables, des vues matérialisées, des déclencheurs, des clés étrangères et des procédures stockées. Il est pris en charge par tous les principaux systèmes d'exploitation, notamment Windows, Linux, macOS, FreeBSD et OpenBSD, et gère toute une gamme de charges de travail, des machines individuelles aux entrepôts de données, aux lacs de données ou aux services web avec de nombreux utilisateurs simultanés. <br />
<br />
ChatGPT est un chatbot génératif basé sur l'intelligence artificielle développé par OpenAI. Il a été lancé en novembre 2022. Il utilise des transformateurs génératifs pré-entraînés (GPT), tels que GPT-5, pour générer du texte, de la parole et des images en réponse aux demandes des utilisateurs. OpenAI exploite le service selon un modèle freemium. Les utilisateurs peuvent interagir avec ChatGPT par le biais de requêtes textuelles, audio et visuelles. Le service a gagné 100 millions d'utilisateurs en deux mois, ce qui en fait l'application logicielle grand public à la croissance la plus rapide de l'histoire. Le site web de ChatGPT figure parmi les 5 sites web les plus visités au monde.<br />
<br />
Depuis des années, PostgreSQL est l'un des systèmes de données les plus critiques et les plus discrets qui alimentent des produits phares tels que ChatGPT et l'API d'OpenAI. À mesure que notre base d'utilisateurs s'est rapidement développée, les exigences imposées à nos bases de données ont également augmenté de manière exponentielle. Au cours de l'année dernière, notre charge PostgreSQL a été multipliée par plus de 10 et continue d'augmenter rapidement.<br />
<br />
Nos efforts pour faire évoluer notre infrastructure de production afin de soutenir cette croissance ont révélé une nouvelle perspective : PostgreSQL peut être mis à l'échelle pour prendre en charge de manière fiable des charges de travail beaucoup plus importantes que ce que beaucoup pensaient possible auparavant. Ce système (initialement créé par une équipe de scientifiques de l'université de Californie à Berkeley) nous a permis de prendre en charge un trafic mondial massif avec une seule instance de serveur flexible Azure PostgreSQL primaire&#8288; et près de 50 répliques en lecture réparties dans plusieurs régions du monde. Voici comment nous avons évolué PostgreSQL chez OpenAI afin de prendre en charge des millions de requêtes par seconde pour 800 millions d'utilisateurs grâce à des optimisations rigoureuses et une ingénierie solide. Nous aborderons également les principaux enseignements que nous avons tirés au cours de ce processus.<br />
<br />
<b><font size="3">Les failles de notre conception initiale</font></b><br />
<br />
Après le lancement de ChatGPT, le trafic a augmenté à un rythme sans précédent. Pour y faire face, nous avons rapidement mis en œuvre des optimisations approfondies au niveau des couches applicatives et de la base de données PostgreSQL, augmenté la taille des instances et ajouté des répliques en lecture. Cette architecture nous a bien servi pendant longtemps. Grâce à des améliorations continues, elle continue d'offrir une marge de manœuvre suffisante pour la croissance future.<br />
<br />
Il peut sembler surprenant qu'une architecture à primaire unique puisse répondre aux exigences d'OpenAI en termes d'échelle, mais la mise en œuvre pratique n'est pas simple. Nous avons constaté plusieurs SEV causés par une surcharge de Postgres, qui suivent souvent le même schéma : un problème en amont provoque une augmentation soudaine de la charge de la base de données, comme des échecs de cache généralisés dus à une défaillance de la couche de mise en cache, une augmentation des jointures multivoies coûteuses saturant le CPU ou une tempête d'écritures due au lancement d'une nouvelle fonctionnalité. À mesure que l'utilisation des ressources augmente, la latence des requêtes augmente et les demandes commencent à expirer. Les nouvelles tentatives amplifient alors encore la charge, déclenchant un cercle vicieux susceptible de dégrader l'ensemble des services ChatGPT et API.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p673648d1769516145/bases-donnees/postgresql/mise-l-echelle-postgresql-prendre-charge-800-millions-d-utilisateurs-chatgpt/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 38711
Taille : 55,3 Ko"  style="float: CONFIG" /></div><br />
Bien que PostgreSQL s'adapte bien à nos charges de travail à forte intensité de lecture, nous rencontrons encore des difficultés pendant les périodes de trafic d'écriture élevé. Cela est principalement dû à la mise en œuvre du contrôle de concurrence multiversion (MVCC) de PostgreSQL, qui le rend moins efficace pour les charges de travail à forte intensité d'écriture. Par exemple, lorsqu'une requête met à jour un tuple ou même un seul champ, la ligne entière est copiée pour créer une nouvelle version. Sous des charges d'écriture importantes, cela entraîne une amplification significative de l'écriture. Cela augmente également l'amplification de la lecture, car les requêtes doivent parcourir plusieurs versions de tuples (tuples morts) pour récupérer la dernière. Le MVCC introduit des défis supplémentaires tels que le gonflement des tables et des index, l'augmentation des frais généraux de maintenance des index et le réglage complexe de l'autovacuum. (Vous trouverez une analyse approfondie de ces questions dans un blog que j'ai rédigé avec le professeur Andy Pavlo de l'université Carnegie Mellon, intitulé « The Part of PostgreSQL We Hate the Most » (La partie de PostgreSQL que nous détestons le plus), cité dans la page Wikipédia consacrée à PostgreSQL.<br />
<br />
<b><font size="3">Faire évoluer PostgreSQL à des millions de QPS</font></b><br />
<br />
Pour atténuer ces limitations et réduire la pression d'écriture, nous avons migré, et continuons à migrer, les charges de travail fragmentables (c'est-à-dire celles qui peuvent être partitionnées horizontalement) et à forte intensité d'écriture vers des systèmes fragmentés tels qu'Azure Cosmos DB, en optimisant la logique des applications afin de minimiser les écritures inutiles. Nous n'autorisons également plus l'ajout de nouvelles tables au déploiement PostgreSQL actuel. Les nouvelles charges de travail sont par défaut transférées vers les systèmes fragmentés.<br />
<br />
Même si notre infrastructure a évolué, PostgreSQL est resté non fragmenté, avec une seule instance principale servant toutes les écritures. La raison principale est que la fragmentation des charges de travail des applications existantes serait très complexe et prendrait beaucoup de temps, nécessitant des modifications sur des centaines de points de terminaison d'applications et pouvant prendre des mois, voire des années. Comme nos charges de travail sont principalement lourdes en lecture et que nous avons mis en œuvre des optimisations importantes, l'architecture actuelle offre encore une marge suffisante pour soutenir la croissance continue du trafic. Bien que nous n'excluions pas le partitionnement de PostgreSQL à l'avenir, ce n'est pas une priorité à court terme étant donné que nous disposons d'une marge de manœuvre suffisante pour notre croissance actuelle et future.<br />
<br />
Dans les sections suivantes, nous aborderons les défis auxquels nous avons été confrontés et les optimisations importantes que nous avons mises en œuvre pour y faire face et prévenir de futures pannes, en poussant PostgreSQL à ses limites et en le faisant évoluer à des millions de requêtes par seconde (QPS).<br />
<br />
<b><font size="3">Réduire la charge sur le primaire</font></b><br />
<br />
<i>Défi : avec un seul rédacteur, une configuration à primaire unique ne peut pas faire évoluer les écritures. Les pics d'écriture importants peuvent rapidement surcharger le primaire et avoir un impact sur des services tels que ChatGPT et notre API.</i><br />
<br />
Solution : nous minimisons autant que possible la charge sur le primaire, tant en lecture qu'en écriture, afin de nous assurer qu'il dispose d'une capacité suffisante pour gérer les pics d'écriture. Le trafic de lecture est déchargé vers des répliques dans la mesure du possible. Cependant, certaines requêtes de lecture doivent rester sur le primaire car elles font partie de transactions d'écriture. Pour celles-ci, nous nous efforçons de garantir leur efficacité et d'éviter les requêtes lentes. Pour le trafic d'écriture, nous avons migré les charges de travail fragmentables et à forte intensité d'écriture vers des systèmes fragmentés tels qu'Azure CosmosDB. Les charges de travail plus difficiles à fragmenter mais qui génèrent néanmoins un volume d'écriture élevé prennent plus de temps à migrer, et ce processus est toujours en cours. Nous avons également optimisé de manière agressive nos applications afin de réduire la charge d'écriture. Par exemple, nous avons corrigé les bogues d'application qui provoquaient des écritures redondantes et avons introduit des écritures différées, lorsque cela était approprié, afin de lisser les pics de trafic. De plus, lors du remplissage des champs des tables, nous appliquons des limites de débit strictes afin d'éviter une pression excessive sur l'écriture.<br />
<br />
<b><font size="3">Optimisation des requêtes</font></b><br />
<br />
<i>Défi : nous avons identifié plusieurs requêtes coûteuses dans PostgreSQL. Dans le passé, les pics de volume soudains de ces requêtes consommaient d'importantes quantités de CPU, ralentissant à la fois ChatGPT et les requêtes API.</i><br />
<br />
Solution : quelques requêtes coûteuses, telles que celles qui joignent plusieurs tables, peuvent dégrader considérablement, voire paralyser l'ensemble du service. Nous devons optimiser en permanence les requêtes PostgreSQL afin de garantir leur efficacité et d'éviter les anti-modèles courants du traitement des transactions en ligne (OLTP). Par exemple, nous avons déjà identifié une requête extrêmement coûteuse qui joignait 12 tables, dont les pics étaient responsables de SEV de haute gravité dans le passé. Nous devons éviter autant que possible les jointures complexes entre plusieurs tables. Si des jointures sont nécessaires, nous avons appris à envisager de décomposer la requête et de déplacer la logique de jointure complexe vers la couche application. Bon nombre de ces requêtes problématiques sont générées par des frameworks de mappage objet-relationnel (ORM). Il est donc important d'examiner attentivement le code SQL qu'ils produisent et de s'assurer qu'il se comporte comme prévu. Il est également courant de trouver des requêtes inactives de longue durée dans PostgreSQL. La configuration de délais d'expiration tels que idle_in_transaction_session_timeout est essentielle pour éviter qu'elles ne bloquent l'autovacuum.<br />
<br />
<b><font size="3">Atténuation du point de défaillance unique</font></b><br />
<br />
<i>Défi : si une réplique en lecture tombe en panne, le trafic peut toujours être acheminé vers d'autres répliques. Cependant, le fait de s'appuyer sur un seul rédacteur signifie qu'il existe un point de défaillance unique : s'il tombe en panne, l'ensemble du service est affecté.</i><br />
<br />
Solution : la plupart des requêtes critiques ne concernent que des requêtes de lecture. Pour atténuer le point de défaillance unique dans le primaire, nous avons déchargé ces lectures du rédacteur vers les répliques, garantissant ainsi que ces requêtes puissent continuer à être traitées même si le primaire tombe en panne. Bien que les opérations d'écriture échouent toujours, l'impact est réduit ; il ne s'agit plus d'un SEV0 puisque les lectures restent disponibles.<br />
<br />
Pour atténuer les pannes du serveur principal, nous l'exécutons en mode haute disponibilité (HA) avec une réplique de secours active, une réplique synchronisée en continu qui est toujours prête à prendre le relais pour traiter le trafic. Si le serveur principal tombe en panne ou doit être mis hors ligne pour maintenance, nous pouvons rapidement promouvoir la réplique de secours afin de minimiser le temps d'indisponibilité. L'équipe Azure PostgreSQL a accompli un travail considérable pour garantir la sécurité et la fiabilité de ces basculements, même en cas de charge très élevée. Pour gérer les pannes de répliques en lecture, nous déployons plusieurs répliques dans chaque région avec une marge de capacité suffisante, afin de garantir qu'une seule panne de réplique n'entraîne pas une panne régionale.<br />
<br />
<b><font size="3">Isolation des charges de travail</font></b><br />
<br />
<i>Défi : nous sommes souvent confrontés à des situations où certaines requêtes consomment une quantité disproportionnée de ressources sur les instances PostgreSQL. Cela peut entraîner une dégradation des performances des autres charges de travail exécutées sur les mêmes instances. Par exemple, le lancement d'une nouvelle fonctionnalité peut introduire des requêtes inefficaces qui consomment beaucoup de CPU PostgreSQL, ralentissant ainsi les requêtes pour d'autres fonctionnalités critiques.</i><br />
<br />
Solution : pour atténuer le problème du « voisin bruyant », nous isolons les charges de travail sur des instances dédiées afin de garantir que les pics soudains de requêtes gourmandes en ressources n'aient pas d'impact sur le reste du trafic. Plus précisément, nous divisons les requêtes en niveaux de priorité faible et élevée, puis les acheminons vers des instances distinctes. De cette façon, même si une charge de travail à faible priorité devient gourmande en ressources, elle ne dégradera pas les performances des requêtes à haute priorité. Nous appliquons la même stratégie à différents produits et services, afin que l'activité d'un produit n'affecte pas les performances ou la fiabilité d'un autre.<br />
<br />
<b><font size="3">Mise en commun des connexions</font></b><br />
<br />
<i>Défi : chaque instance a une limite maximale de connexions (5 000 dans Azure PostgreSQL). Il est facile d'épuiser les connexions ou d'accumuler trop de connexions inactives. Nous avons déjà connu des incidents causés par des tempêtes de connexions qui ont épuisé toutes les connexions disponibles.</i><br />
<br />
Solution : nous avons déployé PgBouncer comme couche proxy pour mettre en pool les connexions à la base de données. Son exécution en mode de mise en pool des instructions ou des transactions nous permet de réutiliser efficacement les connexions, ce qui réduit considérablement le nombre de connexions client actives. Cela réduit également la latence de configuration des connexions : dans nos benchmarks, le temps de connexion moyen est passé de 50 millisecondes (ms) à 5 ms. Les connexions et les requêtes interrégionales peuvent être coûteuses, c'est pourquoi nous regroupons le proxy, les clients et les répliques dans la même région afin de minimiser la charge réseau et le temps d'utilisation des connexions. De plus, PgBouncer doit être configuré avec soin. Des paramètres tels que les délais d'inactivité sont essentiels pour éviter l'épuisement des connexions.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p673649d1769516150/bases-donnees/postgresql/mise-l-echelle-postgresql-prendre-charge-800-millions-d-utilisateurs-chatgpt/2.jpg/" border="0" alt="Nom : 2.jpg
Affichages : 2931
Taille : 86,1 Ko"  style="float: CONFIG" /></div><br />
Chaque réplique en lecture dispose de son propre déploiement Kubernetes exécutant plusieurs pods PgBouncer. Nous exécutons plusieurs déploiements Kubernetes derrière le même service Kubernetes, qui équilibre la charge du trafic entre les pods.<br />
<br />
<b><font size="3">Mise en cache</font></b><br />
<br />
<i>Défi : une augmentation soudaine des échecs de cache peut déclencher une surge de lectures sur la base de données PostgreSQL, saturant le CPU et ralentissant les requêtes des utilisateurs.</i><br />
<br />
Solution : pour réduire la pression de lecture sur PostgreSQL, nous utilisons une couche de mise en cache pour traiter la plupart du trafic de lecture. Cependant, lorsque les taux de réussite du cache chutent de manière inattendue, la vague de cache misses peut envoyer un volume important de requêtes directement à PostgreSQL. Cette augmentation soudaine des lectures de la base de données consomme des ressources importantes, ce qui ralentit le service. Pour éviter la surcharge lors des tempêtes de cache manqué, nous mettons en œuvre un mécanisme de verrouillage (et de location) du cache afin que seul un lecteur qui manque une clé particulière récupère les données de PostgreSQL. Lorsque plusieurs requêtes manquent la même clé de cache, une seule requête acquiert le verrou et procède à la récupération des données et au remplissage du cache. Toutes les autres requêtes attendent que le cache soit mis à jour plutôt que d'atteindre PostgreSQL en même temps. Cela réduit considérablement les lectures redondantes de la base de données et protège le système contre les pics de charge en cascade.<br />
<br />
<b><font size="3">Mise à l'échelle des répliques de lecture</font></b><br />
<br />
<i>Défi : le primaire transmet les données du journal d'écriture préalable (WAL) à chaque réplique de lecture. À mesure que le nombre de répliques augmente, le primaire doit envoyer le WAL à davantage d'instances, ce qui augmente la pression sur la bande passante du réseau et le CPU. Cela entraîne un décalage plus important et plus instable des répliques, ce qui rend le système plus difficile à mettre à l'échelle de manière fiable.</i><br />
<br />
Solution : nous exploitons près de 50 répliques de lecture dans plusieurs régions géographiques afin de minimiser la latence. Cependant, avec l'architecture actuelle, le primaire doit diffuser le WAL vers chaque réplique. Bien qu'il s'adapte actuellement bien aux très grands types d'instances et à une bande passante réseau élevée, nous ne pouvons pas continuer à ajouter indéfiniment des répliques sans finir par surcharger le primaire. Pour remédier à cela, nous collaborons avec l'équipe Azure PostgreSQL sur la réplication en cascade&#8288;(s'ouvre dans une nouvelle fenêtre), où les répliques intermédiaires relaient le WAL vers les répliques en aval. Cette approche nous permet d'évoluer vers plus d'une centaine de répliques sans surcharger le serveur principal. Cependant, elle introduit également une complexité opérationnelle supplémentaire, en particulier en ce qui concerne la gestion des basculements. Cette fonctionnalité est encore en phase de test ; nous nous assurerons qu'elle est robuste et qu'elle peut basculer en toute sécurité avant de la déployer en production.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p673650d1769516157/bases-donnees/postgresql/mise-l-echelle-postgresql-prendre-charge-800-millions-d-utilisateurs-chatgpt/3.jpg/" border="0" alt="Nom : 3.jpg
Affichages : 2888
Taille : 35,3 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">Limite de débit</font></b><br />
<br />
<i>Défi : une augmentation soudaine du trafic sur des points de terminaison spécifiques, une recrudescence de requêtes coûteuses ou une avalanche de tentatives de reconnexion peuvent rapidement épuiser les ressources critiques telles que le CPU, les E/S et les connexions, ce qui entraîne une dégradation généralisée du service.</i><br />
<br />
Solution : nous avons mis en place une limitation du débit à plusieurs niveaux (application, pool de connexions, proxy et requêtes) afin d'éviter que des pics de trafic soudains ne saturent les instances de base de données et ne déclenchent des défaillances en cascade. Il est également essentiel d'éviter des intervalles de réessai trop courts, qui peuvent déclencher des tempêtes de réessais. Nous avons également amélioré la couche ORM afin de prendre en charge la limitation du débit et, si nécessaire, de bloquer complètement certains résumés de requêtes. Cette forme ciblée de délestage permet une récupération rapide après des pics soudains de requêtes coûteuses.<br />
<br />
<b><font size="3">Gestion des schémas</font></b><br />
<br />
<i>Défi : même une petite modification du schéma, telle que la modification du type d'une colonne, peut déclencher une réécriture complète de la table&#8288;. Nous appliquons donc les modifications de schéma avec prudence, en les limitant à des opérations légères et en évitant celles qui réécrivent des tables entières.</i><br />
<br />
Solution : seules les modifications légères du schéma sont autorisées, telles que l'ajout ou la suppression de certaines colonnes qui ne déclenchent pas une réécriture complète de la table. Nous appliquons un délai d'expiration strict de 5 secondes pour les modifications de schéma. La création et la suppression simultanées d'index sont autorisées. Les modifications de schéma sont limitées aux tables existantes. Si une nouvelle fonctionnalité nécessite des tables supplémentaires, celles-ci doivent se trouver dans des systèmes fragmentés alternatifs tels qu'Azure CosmosDB plutôt que PostgreSQL. Lors du remplissage d'un champ de table, nous appliquons des limites de débit strictes afin d'éviter les pics d'écriture. Bien que ce processus puisse parfois prendre plus d'une semaine, il garantit la stabilité et évite tout impact sur la production.<br />
<br />
<b><font size="3">Résultats et perspectives</font></b><br />
<br />
Cet effort démontre qu'avec une conception et des optimisations appropriées, Azure PostgreSQL peut être mis à l'échelle pour gérer les charges de travail de production les plus importantes. PostgreSQL gère des millions de QPS pour les charges de travail à forte intensité de lecture, alimentant les produits les plus critiques d'OpenAI tels que ChatGPT et la plateforme API. Nous avons ajouté près de 50 répliques en lecture, tout en maintenant le décalage de réplication proche de zéro, en conservant des lectures à faible latence dans les régions géographiquement distribuées et en créant une marge de capacité suffisante pour soutenir la croissance future.<br />
<br />
Cette mise à l'échelle fonctionne tout en minimisant la latence et en améliorant la fiabilité. Nous offrons en permanence une latence côté client de l'ordre de quelques millisecondes (p99) et une disponibilité de 99,999 % en production. Au cours des 12 derniers mois, nous n'avons connu qu'un seul incident SEV-0 PostgreSQL (il s'est produit lors du lancement viral&#8288; de ChatGPT ImageGen, lorsque le trafic d'écriture a soudainement été multiplié par plus de 10, plus de 100 millions de nouveaux utilisateurs s'étant inscrits en une semaine).<br />
<br />
Bien que nous soyons satisfaits des progrès réalisés grâce à PostgreSQL, nous continuons à repousser ses limites afin de nous assurer une marge de manœuvre suffisante pour notre croissance future. Nous avons déjà migré les charges de travail fragmentables à forte intensité d'écriture vers nos systèmes fragmentés tels que CosmosDB. Les charges de travail restantes à forte intensité d'écriture sont plus difficiles à fragmenter, mais nous les migrons également de manière active afin de décharger davantage le système principal PostgreSQL. Nous travaillons également avec Azure pour permettre la réplication en cascade afin de pouvoir évoluer en toute sécurité vers un nombre nettement plus important de répliques en lecture.<br />
<br />
À l'avenir, nous continuerons à explorer d'autres approches pour évoluer davantage, notamment PostgreSQL fragmenté ou d'autres systèmes distribués, à mesure que les besoins de notre infrastructure continuent de croître.<br />
<br />
<b>Source</b> : <a rel="nofollow" href="https://openai.com/index/scaling-postgresql/" target="_blank">&quot;Scaling PostgreSQL to power 800 million ChatGPT users&quot;</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Pensez-vous que ce rapport est crédible ou pertinent ?<br />
:fleche: Quel est votre avis sur le sujet ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://intelligence-artificielle.developpez.com/actu/378157/Le-chatbot-IA-ChatGPT-d-OpenAI-etait-hors-service-les-utilisateurs-ont-signale-une-panne-mondiale-les-conversations-ont-disparu-la-panne-etait-due-a-une-erreur-de-configuration-du-routage/" target="_blank">Le chatbot IA ChatGPT d'OpenAI était hors service, les utilisateurs ont signalé une panne mondiale, les conversations ont disparu. La panne était due à « une erreur de configuration du routage »</a><br />
<br />
:fleche: <a href="https://mongodb.developpez.com/actu/369481/Redefinir-la-base-de-donnees-pour-l-IA-pourquoi-MongoDB-a-acquis-Voyage-AI-par-Dev-Ittycheria-PDG-de-MongoDB/" target="_blank">Redéfinir la base de données pour l'IA : pourquoi MongoDB a acquis Voyage AI, par Dev Ittycheria, PDG de MongoDB</a><br />
<br />
:fleche: <a href="https://intelligence-artificielle.developpez.com/actu/362638/Apprendre-a-raisonner-avec-le-nouveau-LLM-OpenAI-o1-forme-avec-l-apprentissage-par-renforcement-pour-effectuer-des-raisonnements-complexes-car-o1-reflechit-avant-de-repondre/" target="_blank">Apprendre à raisonner avec le nouveau LLM OpenAI o1 formé avec l'apprentissage par renforcement pour effectuer des raisonnements complexes, car o1 réfléchit avant de répondre</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p673648d1769516145/bases-donnees/postgresql/mise-l-echelle-postgresql-prendre-charge-800-millions-d-utilisateurs-chatgpt/1.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p673649d1769516150/bases-donnees/postgresql/mise-l-echelle-postgresql-prendre-charge-800-millions-d-utilisateurs-chatgpt/2.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p673650d1769516157/bases-donnees/postgresql/mise-l-echelle-postgresql-prendre-charge-800-millions-d-utilisateurs-chatgpt/3.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f89/bases-donnees/postgresql/">PostgreSQL</category>
			<dc:creator>Bohan Zhang</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181748/bases-donnees/postgresql/mise-l-echelle-postgresql-prendre-charge-800-millions-d-utilisateurs-chatgpt/</guid>
		</item>
		<item>
			<title><![CDATA[PostgreSQL 18 est disponible avec un sous-système d'E/S asynchrone, la prise en charge d'OAuth et plus encore]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179525&amp;goto=newpost</link>
			<pubDate>Sun, 28 Sep 2025 08:14:40 GMT</pubDate>
			<description>*PostgreSQL 18 est...</description>
			<content:encoded><![CDATA[<div><b><font size="4">PostgreSQL 18 est disponible, la dernière version de la base de données open source apporte un sous-système d'entrée/sortie asynchrone, des améliorations de performances et la prise en charge d'OAuth</font></b><br />
<br />
<b>PostgreSQL 18 est disponible, introduisant un sous-système d'entrée/sortie (E/S) asynchrone qui améliore les performances dans des opérations clés telles que les analyses séquentielles et bitmap heap ainsi que les processus de nettoyage, avec des benchmarks montrant des gains de vitesse pouvant atteindre trois fois plus. Cette version apporte également la conservation des statistiques du planificateur lors des mises à niveau majeures, des améliorations de pg_upgrade, des capacités de « skip scan » aux index B-tree multicolonnes, l'authentification OAuth 2.0 intégrée et de nombreuses autres améliorations.</b><br />
<br />
PostgreSQL, également connu sous le nom de Postgres, est un système de gestion de base de données relationnelle (SGBDR) libre et open source qui met l'accent sur l'extensibilité et la conformité SQL. PostgreSQL offre des transactions avec des propriétés d'atomicité, de cohérence, d'isolation et de durabilité (ACID), des vues automatiquement actualisables, des vues matérialisées, des déclencheurs, des clés étrangères et des procédures stockées. PostgreSQL est pris en charge par tous les principaux systèmes d'exploitation, notamment Windows, Linux, macOS, FreeBSD et OpenBSD, et gère toute une gamme de charges de travail, des machines individuelles aux entrepôts de données, en passant par les lacs de données ou les services web avec de nombreux utilisateurs simultanés.<br />
<br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/yIaE9lONIVI?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
<b><font size="3">PostgreSQL 18 : les principales nouveautés en bref</font></b><br />
<br />
PostgreSQL 18 vient de sortir en tant que nouvelle version de cette base de données relationnelle objet open source. Cette version introduit un sous-système d'entrée/sortie (E/S) asynchrone qui améliore les performances pour les opérations clés, notamment les analyses séquentielles et bitmap heap, ainsi que les processus de nettoyage. Les tests de performance démontrent des performances jusqu'à trois fois plus rapides dans certains scénarios.<br />
<br />
Suite à ces modifications fondamentales du moteur, PostgreSQL 18 peut désormais conserver les statistiques du planificateur lors des mises à niveau majeures, ce qui permet aux clusters de retrouver plus rapidement les niveaux de performances attendus après une mise à jour. L'utilitaire <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_upgrade</span> a bénéficié de plusieurs améliorations, ce qui réduit les temps de mise à niveau, en particulier pour les bases de données comportant de nombreuses tables et séquences. <br />
<br />
PostgreSQL 18 ajoute également des capacités de « skip scan » aux index B-tree multicolonnes, ce qui permet à davantage de requêtes de tirer parti des index et de bénéficier d'une exécution plus rapide lorsque les colonnes préfixées ne présentent pas de conditions d'égalité ou lorsque certaines combinaisons <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">OR</span></span> sont utilisées dans les clauses <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">WHERE</span></span>.<br />
<br />
S'appuyant sur les progrès réalisés en matière de gestion des données, cette version fait des colonnes virtuelles générées la valeur par défaut, calcule leurs valeurs au moment de la requête et permet la réplication logique des colonnes générées stockées. De plus, les développeurs peuvent désormais accéder aux valeurs des lignes précédentes et nouvelles à l'aide des clauses <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">RETURNING</span> pour les instructions <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">INSERT</span></span>, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">UPDATE</span></span>, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">DELETE</span></span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">MERGE</span></span>.<br />
<br />
Parmi les autres modifications, on peut citer la prise en charge de la génération <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">uuidv7<span class="br0">&#40;</span><span class="br0">&#41;</span></span> ordonnée par horodatage, un traitement de texte plus simple et plus rapide, l'authentification OAuth 2.0 intégrée, l'amélioration de la journalisation des conflits de réplication logique, une stratégie de nettoyage proactive et l'activation par défaut des sommes de contrôle des pages pour les nouvelles bases de données. Bien évidemment, plusieurs autres améliorations sont également incluses dans cette version.<br />
<br />
<b><font size="3">Présentation du sous-système d'E/S asynchrone</font></b><br />
<br />
PostgreSQL s'appuyait auparavant sur les mécanismes de prélecture du système d'exploitation pour accélérer la récupération des données. Cependant, comme les systèmes d'exploitation ne disposent pas d'informations sur les modèles d'accès spécifiques aux bases de données, ils ne peuvent pas toujours anticiper les données qui seront nécessaires, ce qui entraîne des performances sous-optimales dans de nombreuses charges de travail.<br />
<br />
PostgreSQL 18 introduit un nouveau sous-système d'E/S asynchrones (AIO) conçu pour pallier cette limitation. L'AIO permet à PostgreSQL d'émettre plusieurs requêtes d'E/S simultanément au lieu d'attendre que chacune d'entre elles se termine dans l'ordre. Cela élargit la lecture anticipée existante et améliore le débit global. Les opérations AIO prises en charge dans PostgreSQL 18 comprennent les analyses séquentielles, les analyses de tas bitmap et le nettoyage. Les tests de performance ont démontré des gains de performance pouvant atteindre 3 fois dans certains scénarios.<br />
<br />
Le nouveau paramètre <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">io_method</span> vous permet de basculer entre les méthodes AIO, notamment <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">worker</span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">io_uring</span>, ou vous pouvez choisir de conserver le comportement actuel de PostgreSQL avec le paramètre sync.<br />
<br />
<b><font size="3">Mises à niveau plus rapides, meilleures performances après la mise à niveau</font></b><br />
<br />
Une fonctionnalité clé de PostgreSQL est la génération et le stockage de statistiques qui aident PostgreSQL à sélectionner le plan de requête le plus efficace. Avant PostgreSQL 18, ces statistiques n'étaient pas conservées lors d'une mise à niveau majeure, ce qui pouvait entraîner une dégradation significative des performances des requêtes sur les systèmes très sollicités jusqu'à la fin de l'exécution de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">ANALYZE</span>. PostgreSQL 18 introduit la possibilité de conserver les statistiques du planificateur lors d'une mise à niveau majeure, ce qui aide un cluster mis à niveau à atteindre plus rapidement les performances attendues après la mise à niveau.<br />
<br />
De plus, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_upgrade</span>, un utilitaire qui effectue les mises à niveau majeures, comprend plusieurs améliorations dans PostgreSQL 18, telles que des mises à niveau plus rapides lorsqu'une base de données contient de nombreux objets comme des tables et des séquences. Cette version permet également à <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_upgrade</span> de traiter ses vérifications en parallèle en fonction des paramètres du drapeau <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #808080;">--jobs</span></span>, et ajoute le drapeau <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #808080;">--swap</span></span> qui permute les répertoires de mise à niveau au lieu de copier, cloner ou lier des fichiers.<br />
<br />
<b><font size="3">Améliorations des performances générales et des requêtes</font></b> <br />
<br />
PostgreSQL 18 accélère encore davantage les performances des requêtes grâce à des fonctionnalités qui accélèrent automatiquement les charges de travail. Cette version introduit les recherches « skip scan » sur les index B-tree multicolonnes, qui améliorent le temps d'exécution des requêtes omettant une condition <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">=</span> sur une ou plusieurs colonnes d'index préfixées. Elle permet également d'optimiser les requêtes utilisant des conditions <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">OR</span></span> dans un <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">WHERE</span></span> afin d'utiliser un index, ce qui accélère considérablement l'exécution. De nombreuses améliorations ont également été apportées à la manière dont PostgreSQL planifie et exécute les jointures de tables, depuis l'amélioration des performances des jointures par hachage jusqu'à la possibilité d'utiliser des tris incrémentiels pour les jointures par fusion. PostgreSQL 18 prend également en charge les constructions parallèles pour les index GIN, en joignant les index B-tree et BRIN pour prendre en charge cette fonctionnalité.<br />
<br />
Cette version s'appuie également sur la prise en charge par PostgreSQL de l'accélération matérielle, notamment la prise en charge des intrinsèques ARM NEON et SVE CPU pour la fonction <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">popcount</span>, qui est utilisée par <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">bit_count</span> et d'autres fonctionnalités internes.<br />
<br />
<b><font size="3">Amélioration de l'expérience développeur</font></b><br />
<br />
PostgreSQL 18 introduit des colonnes virtuelles générées qui calculent les valeurs au moment de la requête au lieu de les stocker. Il s'agit désormais de l'option par défaut pour les colonnes générées. De plus, les colonnes générées stockées peuvent désormais être répliquées logiquement.<br />
<br />
Cette version ajoute la possibilité d'accéder à la fois aux valeurs précédentes (<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">OLD</span>) et actuelles (<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">NEW</span>) dans la clause <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">RETURNING</span> pour les commandes <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">INSERT</span></span>, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">UPDATE</span></span>, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">DELETE</span></span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">MERGE</span></span>. PostgreSQL 18 ajoute également la génération UUIDv7 via la fonction <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">uuidv7<span class="br0">&#40;</span><span class="br0">&#41;</span></span>, qui vous permet de générer des UUID aléatoires classés par horodatage afin de prendre en charge de meilleures stratégies de mise en cache. PostgreSQL 18 inclut <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">uuidv4<span class="br0">&#40;</span><span class="br0">&#41;</span></span> comme alias pour <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">gen_random_uuid<span class="br0">&#40;</span><span class="br0">&#41;</span></span>.<br />
<br />
PostgreSQL 18 ajoute des contraintes temporelles (contraintes sur les plages) pour les contraintes <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">PRIMARY</span> <span style="color: #0000ff;">KEY</span></span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">UNIQUE</span></span> à l'aide de la clause <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">WITHOUT OVERLAPS</span>, et pour les contraintes <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">FOREIGN</span> <span style="color: #0000ff;">KEY</span></span> à l'aide de la clause <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">PERIOD</span>.<br />
<br />
Enfin, PostgreSQL 18 facilite la création de la définition de schéma d'une table étrangère à l'aide de la définition d'une table locale avec la commande <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">FOREIGN</span> <span style="color: #0000ff;">TABLE</span> ... <span style="color: #0000ff;">LIKE</span></span>.<br />
<br />
<b><font size="3">Traitement du texte amélioré</font></b><br />
<br />
PostgreSQL 18 facilite et accélère le traitement du texte grâce à plusieurs nouvelles améliorations. Cette version ajoute le classement <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">PG_UNICODE_FAST</span>, qui fournit une sémantique Unicode complète pour les transformations de cas tout en contribuant à accélérer de nombreuses comparaisons. Cela inclut les fonctions de comparaison de chaînes <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">upper</span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">lower</span> et la nouvelle fonction <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">casefold</span> pour les comparaisons insensibles à la casse. <br />
<br />
De plus, PostgreSQL 18 prend désormais en charge les comparaisons <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">LIKE</span></span> sur du texte utilisant un classement non déterministe, ce qui simplifie la manière dont vous pouvez effectuer des correspondances de motifs plus complexes. <br />
<br />
Cette version modifie également la recherche en texte intégral afin d'utiliser le fournisseur de classement par défaut d'un cluster au lieu de toujours utiliser libc, ce qui peut vous obliger à réindexer toutes les recherches en texte intégral et les index <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_trgm</span> après avoir exécuté <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_upgrade</span>.<br />
<br />
<b><font size="3">Fonctionnalités d'authentification et de sécurité</font></b><br />
<br />
PostgreSQL 18 introduit l'authentification OAuth, qui permet aux utilisateurs de s'authentifier à l'aide des mécanismes OAuth 2.0 pris en charge par les extensions PostgreSQL. De plus, PostgreSQL 18 inclut la validation pour le mode FIPS et ajoute le paramètre <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">ssl_tls13_ciphers</span> pour configurer les suites de chiffrement TLS v1.3 côté serveur.<br />
<br />
Cette version déprécie l'authentification par mot de passe <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">md5</span>, qui sera supprimée dans une prochaine version. Si vous avez besoin d'une authentification par mot de passe PostgreSQL, utilisez l'authentification SCRAM. PostgreSQL 18 prend également en charge l'authentification SCRAM passthrough avec <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">postgres_fdw</span> et dblink pour l'authentification auprès d'instances PostgreSQL distantes. De plus, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pgcrypto</span> prend désormais en charge le chiffrement SHA-2 pour le hachage des mots de passe.<br />
<br />
<b><font size="3">Réplication</font></b><br />
<br />
PostgreSQL 18 prend en charge le signalement des conflits d'écriture de réplication logique dans les journaux et dans la vue <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_stat_subscription_stats</span>. De plus, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">CREATE</span> SUBSCRIPTION</span> utilise désormais par défaut le streaming parallèle pour appliquer les transactions, ce qui peut contribuer à améliorer les performances. <br />
<br />
L'utilitaire <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_createsubscriber</span> dispose désormais d'un indicateur <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #808080;">--all</span></span> qui vous permet de créer des répliques logiques pour toutes les bases de données d'une instance à l'aide d'une seule commande. PostgreSQL 18 vous permet également de supprimer automatiquement les emplacements de réplication inactifs afin d'éviter de stocker trop de fichiers journaux d'écriture anticipée sur un éditeur.<br />
<br />
<b><font size="3">Maintenance et observabilité</font></b><br />
<br />
PostgreSQL 18 améliore sa stratégie de nettoyage en gelant de manière proactive davantage de pages lors des nettoyages réguliers, ce qui réduit la charge et facilite les situations nécessitant des nettoyages agressifs.<br />
<br />
PostgreSQL 18 ajoute plus de détails à <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">EXPLAIN</span></span>, qui fournit des informations sur l'exécution du plan de requête, et à partir de cette version, affiche désormais automatiquement le nombre de tampons (l'unité fondamentale de stockage des données) auxquels on accède lors de l'exécution de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">EXPLAIN</span> ANALYZE</span>. De plus, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">EXPLAIN</span> ANALYZE</span> affiche désormais le nombre de recherches d'index effectuées lors d'un balayage d'index, et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">EXPLAIN</span> ANALYZE VERBOSE</span> inclut des statistiques sur le CPU, le WAL et la lecture moyenne. <br />
<br />
PostgreSQL 18 inclut davantage d'informations dans <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_stat_all_tables</span> sur le temps passé sur le vacuum et les opérations associées, ainsi que des statistiques par connexion sur l'utilisation des E/S et du WAL.<br />
<br />
<b><font size="3">Autres changements notables</font></b><br />
<br />
Les bases de données initialisées avec PostgreSQL 18 <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">initdb</span> ont désormais les sommes de contrôle de page activées par défaut. Cela peut affecter les mises à niveau à partir de clusters sans somme de contrôle, ce qui vous obligerait à créer un nouveau cluster PostgreSQL 18 avec l'option <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #808080;">--no-data-checksums</span></span> lors de l'utilisation de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pg_upgrade</span>.<br />
<br />
PostgreSQL 18 introduit également une nouvelle version (3.2) du protocole filaire PostgreSQL, la première nouvelle version du protocole depuis PostgreSQL 7.4 (2003). <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">libpq</span> utilise toujours la version 3.0 par défaut, tandis que les clients (par exemple, les pilotes, les poolers, les proxys) ajoutent la prise en charge de la nouvelle version du protocole.<br />
<br />
<a rel="nofollow" href="https://www.postgresql.org/download/" target="_blank">Télécharger PostgreSQL 18</a><br />
<br />
<b>Source :</b> <a rel="nofollow" href="https://www.postgresql.org/" target="_blank">PostgreSQL</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Quel est votre avis sur le sujet ?<br />
:fleche: Que pensez-vous des améliorations apportées par cette version de PostgreSQL, les trouvez-vous utiles et intéressantes ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://postgresql.developpez.com/actu/363186/PostgreSQL-17-est-disponible-avec-une-nouvelle-structure-de-memoire-interne-et-des-ameliorations-de-performance/" target="_blank">PostgreSQL 17 est disponible avec une nouvelle structure de mémoire interne et des améliorations de performance</a><br />
<br />
:fleche: <a href="https://postgresql.developpez.com/actu/348416/PostgreSQL-16-est-disponible-la-derniere-version-de-la-base-de-donnees-open-source-apporte-des-ameliorations-au-parallelisme-des-requetes-et-a-la-replication-logique/" target="_blank">PostgreSQL 16 est disponible, la dernière version de la base de données open source apporte des améliorations au parallélisme des requêtes et à la réplication logique</a><br />
<br />
:fleche: <a href="https://postgresql.developpez.com/actu/337615/PostgreSQL-15-est-disponible-elle-ameliore-de-l-ordre-de-25-pourcent-a-400-pourcent-ses-algorithmes-de-tri-en-memoire-et-sur-disque-et-apporte-la-populaire-commande-MERGE/" target="_blank">PostgreSQL 15 est disponible, elle améliore de l'ordre de 25 % à 400 % ses algorithmes de tri en mémoire et sur disque, et apporte la populaire commande MERGE</a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f89/bases-donnees/postgresql/">PostgreSQL</category>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179525/bases-donnees/postgresql/postgresql-18-disponible-sous-systeme-d-e-s-asynchrone-prise-charge-d-oauth-plus/</guid>
		</item>
		<item>
			<title>INSERT en Batch très lent depuis JDBC Driver 42.7.7</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179480&amp;goto=newpost</link>
			<pubDate>Thu, 25 Sep 2025 14:48:58 GMT</pubDate>
			<description>Bonjour, 
 
Dans mon...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Dans mon application Java je fais des INSERT en batch avec :<br />
<br />
preparedStatement.addBatch();<br />
<br />
et tous les XXX je fais :<br />
<br />
preparedStatement.executeBatch();<br />
<br />
<br />
J'utilise le JDBC Driver 42.7.5 en production, pas de soucis mais à partir de la version 42.7.7 (je n'ai pas testé la version 42.7.6 parce que noté avec une vulnérabilité sur Maven!?)<br />
<br />
J'ai fais le test plusieurs fois avec des données différentes...<br />
<br />
La vitesse passe de +- 5500/sec (42.7.5) à +- 200/sec (42.7.7 ou plus)<br />
<br />
N'ayant rien changé à mon code Java cela vient à coup sûr du JDBC Driver<br />
<br />
Une idée ?<br />
<br />
<br />
Merci d'avance.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f89/bases-donnees/postgresql/">PostgreSQL</category>
			<dc:creator>genamiga</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179480/bases-donnees/postgresql/insert-batch-tres-lent-jdbc-driver-42-7-7-a/</guid>
		</item>
		<item>
			<title>Quelle est la longueur maximum pour les noms de contrainte ?</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176739&amp;goto=newpost</link>
			<pubDate>Fri, 09 May 2025 10:04:44 GMT</pubDate>
			<description>Quelle est la longueur...</description>
			<content:encoded><![CDATA[<div>Quelle est la longueur maximum pour les noms de contrainte ?<br />
<br />
J'ai bien trouvé cette page (<a rel="nofollow" href="https://doc.postgresql.fr/current/limits.html" target="_blank">https://doc.postgresql.fr/current/limits.html</a>): &quot;longueur de l'identifiant&quot; = &quot;63 octets&quot;.<br />
Mais je ne suis pas sûr de la signification de &quot;<b>identifiant</b>&quot;.<br />
<br />
Sinon, j'ai trouvé ça (<a rel="nofollow" href="https://forums.postgresql.fr/viewtopic.php?id=2830" target="_blank">https://forums.postgresql.fr/viewtopic.php?id=2830</a>):<br />
Mais certains parlent de 64 et d'autres de 128.<br />
<br />
Où trouver cette info dans la doc officielle ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f89/bases-donnees/postgresql/">PostgreSQL</category>
			<dc:creator>Lung</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176739/bases-donnees/postgresql/longueur-maximum-noms-contrainte/</guid>
		</item>
	</channel>
</rss>
