URL: https://linuxfr.org/forums/programmation-sql/posts/optimisation-postgre-pour-requetes-de-stats Title: Optimisation Postgre pour requetes de stats Authors: Ontologia Date: 2010年03月19日T16:52:26+01:00 Tags: postgresql Score: 0 Bonjour, je travaille sur une base assez grosse, chargée une seul fois pour toute, avec pour objectif de réaliser pas mal de statistiques sur les données de celle-ci (que des select). Je cherche à configurer les paramètres de postgresql.conf au mieux afin d'avoir les meilleurs perfs possibles. Je viens vers vous pour avoir quelques conseils issus de votre expérience éventuelle sur ce genre de cas très particulier. Mes contraintes/caractéristiques : Hardware : Macbook = Core Duo 1,8 Ghz , 2 Go de mémoire, DD 7200 tours (perfs honorables, pointes à 40 Mo/s en random access) Base : 2 tables, l'une de 300 k lignes, l'autre de 5 millions. *** Tables chargée une seule et dernières fois : plus d'ajout ***, Objectifs : Etablir toutes sortes de statistiques sur mes données => uniquement des select ; bcp d'aggrégations, calculs... Sur ma table de 5 millions de lignes, j'ai 4 données de base + un lien ident vers un autre table. Lors de la construction, j'essaye d'updater une dizaine de champs pour chaque ligne de cette table A l'heure ou j'en suis, les requetes d'update sont extrêmement longue : Au bout d'une journée, toujours pas finies !! Ma question : J'ai consulté la doc pour améliorer les params dans postgresql.conf, mais je me demande s'il y a qq chose à améliorer. J'ai senti une nette amélioration sur les requetes d'insert into select. Mes params postgresql.conf (j'ai laissé les params désactivé avec #) Résumé : shared_buffers = 490MB # min 128kB # (change requires restart) temp_buffers = 8MB # min 800kB max_connections = 3 effective_cache_size = 1024MB J'ai activé les Genetic Query Optimizer (peut être une mauvaise idée ) ? Le fichier de conf (settings liés à l'optim) # - Memory - shared_buffers = 490MB # min 128kB # (change requires restart) temp_buffers = 8MB # min 800kB #max_prepared_transactions = 0 # zero disables the feature # (change requires restart) # Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory # per transaction slot, plus lock space (see max_locks_per_transaction). # It is not advisable to set max_prepared_transactions nonzero unless you # actively intend to use prepared transactions. #work_mem = 1MB # min 64kB #maintenance_work_mem = 16MB # min 1MB #max_stack_depth = 2MB # min 100kB # - Kernel Resource Usage - #max_files_per_process = 1000 # min 25 # (change requires restart) #shared_preload_libraries = '' # (change requires restart) # - Cost-Based Vacuum Delay - #vacuum_cost_delay = 0ms # 0-100 milliseconds #vacuum_cost_page_hit = 1 # 0-10000 credits #vacuum_cost_page_miss = 10 # 0-10000 credits #vacuum_cost_page_dirty = 20 # 0-10000 credits #vacuum_cost_limit = 200 # 1-10000 credits # - Background Writer - #bgwriter_delay = 200ms # 10-10000ms between rounds #bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round #bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round # - Asynchronous Behavior - #effective_io_concurrency = 1 # 1-1000. 0 disables prefetching #fsync = on # turns forced synchronization on or off synchronous_commit = on # immediate fsync at commit #wal_sync_method = fsync # the default is the first option # supported by the operating system: # open_datasync # fdatasync # fsync # fsync_writethrough # open_sync #full_page_writes = on # recover from partial page writes wal_buffers = 1024kB # min 32kB # (change requires restart) #wal_writer_delay = 200ms # 1-10000 milliseconds #commit_delay = 0 # range 0-100000, in microseconds #commit_siblings = 5 # range 1-1000 effective_cache_size = 1024MB # - Genetic Query Optimizer - geqo = on geqo_threshold = 12 geqo_effort = 5 # range 1-10 geqo_pool_size = 0 # selects default based on effort geqo_generations = 0 # selects default based on effort geqo_selection_bias = 2.0 # range 1.5-2.0 je n'ai pas touché au reste... Merci !

AltStyle によって変換されたページ (->オリジナル) /