Testet e Thread pool tregojnë se ndryshimet e madhësisë së buffer ndryshojnë rezultatet
Database thread pool testing i raportuar nga Percona më 12 tetor 2026 tregon se vlera e connection pooling varet shumë nga madhësia e memory, numri i connections dhe zbatimi specifik i serverit. Një thread pool është një mënyrë që një database server të ripërdorë një grup të kontrolluar worker threads, që janë njësi ekzekutimi brenda serverit, në vend që të krijojë ose planifikojë punë shumë lirshëm kur shumë clients lidhen njëkohësisht. Qëllimi është të mbahet throughput i lartë dhe latency e parashikueshme kur një database është nën presion.
Benchmark-et krahasuan variantin database server të Percona 9.7.1-1 me database server standard 26.7.0, dhe gjithashtu kontrolluan database server standard 26.7.0 kundrejt database server standard 9.7.2. Percona deklaron se rezultatet e database server standard 26.7.0 dhe 9.7.2 ishin shumë të afërta. Konfigurimet pa thread pool u afruan në vlera të ngjashme, dhe konfigurimet me thread pool bënë të njëjtën gjë në nivelet e testuara të buffer prej 2G, 12G dhe 32G. Cilësimet e testuara të thread pool përfshinin vlera thread_pool_size prej 10, 20, 40, 80, 120 dhe 160, dhe vlera thread_pool_oversubscribe prej 2, 3 dhe 4. Percona vëren vetëm se database server standard 26.7.0 ishte fare pak më i shpejtë se 9.7.2 në numra të lartë client thread, ndaj krahasimet e mëvonshme përqendrohen te database server standard 26.7.0.
Pika praktike më e rëndësishme është se InnoDB buffer pool, zona e memory ku database server mban të dhënat e tabelave dhe index që përdoren shpesh, ndryshoi rezultatet. Me innodb_buffer_pool_size të vendosur në 2G, database server standard 26.7.0 nuk pa të njëjtin përfitim të madh nga thread pool që u raportua për database server të Percona, por konfigurimi i pooled përsëri ndihmoi në numra të lartë connections. Në 2560 client connections, database server standard me thread pool arriti 371 TPS, ose transactions per second, krahasuar me 122 TPS pa thread pool. Kjo është rreth tri herë throughput pa pooled. Percona raporton se thread_pool_size=10 ishte zgjedhja më e mirë në këtë nivel, ndërsa cilësimet më të mëdha prej 20, 40, 80, 120 dhe 160 e përmirësuan TPS më pak. Për database server standard në 2G, ndryshimi i thread_pool_oversubscribe pati pak efekt, megjithëse një vlerë prej 2 ishte pak më e mirë se 3 ose 4.
Në 12G, throughput i përgjithshëm i database server standard u rrit, por avantazhi relativ i thread pooling në numrin më të lartë të connections ishte më i vogël se në 2G. Me 2560 connections dhe innodb_buffer_pool_size=12G, database server standard arriti 1273 TPS me thread pool dhe 718 TPS pa të, gjë që Percona e përshkruan si përmirësim prej 77 për qind. Në 32G, ku data set ishte plotësisht i buffered, konfigurimi pooled i database server standard gjithashtu e mundi konfigurimin non-pooled: 18,975 TPS kundrejt 17,011 TPS, një fitore prej 11.6 për qind për thread pool. Rezultati i latency ndoqi të njëjtin drejtim. Percona raporton se p95 latency, që do të thotë response time nën të cilën përfundojnë 95 për qind e requests, ra nga 759 ms në 153 ms me thread pool të database server standard të aktivizuar në atë skenar plotësisht të buffered.
Krahasimi i drejtpërdrejtë midis variantit database server të Percona 9.7.1-1 dhe database server standard 26.7.0 tregon pse administratorët nuk duhet të supozojnë se emrat identikë të cilësimeve nënkuptojnë sjellje identike. Me innodb_buffer_pool_size=2G, Percona përdori cilësimet thread pool me performancën më të mirë për secilin server: thread_pool_size=10 për të dy, thread_pool_oversubscribe=4 për database server të Percona, dhe thread_pool_oversubscribe=2 për database server standard. Database server standard nisi më shpejt në 40 connections, por Percona nuk i trajton numrat e ulët të connections si test të mirë të efikasitetit të thread pool. Në 2560 connections, database server i Percona prodhoi 2304 TPS krahasuar me 371 TPS të database server standard, një diferencë 6.2 herë në favor të database server të Percona.
Me një buffer pool 12G, forma ishte e ngjashme. Database server standard ishte më i shpejtë në pikat më të ulëta prej 40 dhe 80 connections, por në 2560 connections thread pool i database server të Percona e tejkaloi database server standard. Niveli 32G e përmbysi rezultatin. Në rastin plotësisht të buffered, konfigurimi më i mirë i Percona database server ndryshoi në thread_pool_size=160 dhe thread_pool_oversubscribe=2, ndërsa më i miri i database server standard mbeti thread_pool_size=10 dhe thread_pool_oversubscribe=2. Percona e interpreton këtë si provë se, në serverin e saj, rritja e innodb_buffer_pool_size mund të kërkojë rritjen e thread_pool_size për ta mbajtur thread pool duke punuar në mënyrë optimale.
Në 32G, database server standard kishte rezultatin më të fortë të thread pool: 19,054 TPS krahasuar me 15,519 TPS për database server të Percona, një diferencë prej 22 për qind. Latency gjithashtu favorizoi database server standard në atë nivel. Me thread pooling të çaktivizuar, Percona raporton se të dy serverët kishin p95 latency të ngjashme, me database server standard pak më të shkurtër. Me thread pool të aktivizuar, p95 latency e database server standard ishte rreth 25 për qind më e mirë, në 177 ms krahasuar me 235 ms për database server të Percona. Megjithatë, në nivelet 2G dhe 12G, database server i Percona tregoi p95 latency pak më të ulët se database server standard.
Për ekipet IT, mësimi nuk është se një cilësim thread pool është universalisht i saktë. Është se connection management, memory sizing dhe forma e workload duhet të testohen së bashku. Rezultatet e Percona tregojnë se zbatimi i saj i thread pool është më i ndjeshëm ndaj thread_pool_size dhe thread_pool_oversubscribe, dhe se ato cilësime patën efektin më të madh në performancën e tij. Database server standard tregoi variacion më pak dramatik kur këta parametra ndryshuan, dhe përfitimi i tij më i qartë nga thread pooling u shfaq vetëm në numra të lartë connections si 1280 dhe 2560. Database server i Percona tregoi përfitime shumë më herët, në 80 ose më shumë connections.
Kjo ka rëndësi për sistemet e biznesit sepse database të mbingarkuara shpesh dështojnë gradualisht përpara se të dështojnë dukshëm: response times rriten, queues grumbullohen dhe përdoruesit e aplikacioneve shohin faqe të ngadalta përpara se dikush të shohë një ndërprerje të pastër. Një konfigurim i menaxhuar mund të ndihmojë duke e bërë matjen rutinë dhe jo rastësore. Për lexuesit që po shqyrtojnë operacionet e tyre database, AEU Data provides European cloud and data infrastructure, një bazë e përshtatshme kur ekipet duhet të drejtojnë data services me mbikëqyrje operacionale të disiplinuar.
Përfundimi i sigurt është të bëni benchmark përpara se të ndryshoni cilësimet e production. Testoni me numra connections që i ngjajnë aplikacionit real, krahasoni throughput dhe p95 latency, dhe përsëriteni testin në madhësi realiste memory. Thread pools mund ta mbrojnë një database nga concurrency e tepruar, por këto benchmark-e tregojnë se vlera e tyre varet nga serveri, buffer pool dhe workload, jo vetëm nga emri i feature.