Yanıtlar:
Hayır, v9.6'dan önceki PostgreSQL sürümleri için. Lütfen PostgreSQL SSS bölümüne bakın : PostgreSQL CPU kaynaklarını nasıl kullanır?
PostgreSQL sunucusu işlem tabanlıdır (dişli değil). Her veritabanı oturumu, tek bir PostgreSQL işletim sistemi (OS) işlemine bağlanır . Birden çok oturum, işletim sistemi tarafından kullanılabilir tüm CPU'lara otomatik olarak yayılır. İşletim sistemi ayrıca disk G / Ç işlemlerini yürütmek ve diğer veritabanı dışı görevleri çalıştırmak için CPU'ları kullanır. İstemci uygulamaları, her biri ayrı bir veritabanı işlemine bağlanan iş parçacıkları kullanabilir.
9.6 sürümünden bu yana , bazı sorguların bölümleri , birden fazla CPU çekirdeğinin kullanılmasına izin veren ayrı işletim sistemi işlemlerinde paralel olarak çalıştırılabilir. Paralel sorgular varsayılan olarak sürüm 10'da (max_parallel_workers_per_gather) etkinleştirilir ve gelecekteki sürümlerde ek paralellik beklenir.
PostgreSQL 9.6+ sonrasında Parallel-Query'nin PostgreSQL'e geldiğini görmeye başlayacaktı.
Örneğin, Paralel Tarama / Paralel Birleştirme / Paralel Büyüklükler gibi Kavramlar şimdiden hazırlanmıştır, yakında daha fazlası gelecektir.
Asıl heyecan verici olan, bazı durumlarda oldukça etkileyici olan onaylayıcı raporlar olduğudur near-linear speed-up
!
Hayır, ancak bir geçici çözüm var. :)
Sorgunuzu birincil anahtara göre bölen parsel (paralel seçim) plpgsql işlevini buldum, ardından veritabanına dblink uzantısı ile bağlanıyor ve tüm alt sorgular için bekler.
https://gist.github.com/mjgleaso/8031067
Yazar ayrıca bu fonksiyon hakkında bir makale yazdı: http://geeohspatial.blogspot.com/2013/12/a-simple-function-for-parallel-queries_18.html
Hayır. Her bağlantı sunucuda ayrı bir işlem oluşturur.
Bazı paralellikleri pljava gibi dişli bir prosedür dili kullanarak "taklit edebilirsiniz". Birkaç iş parçacığını başlatan bir java prosedürü (işlevi) oluşturun ve birkaç işçiyi kullanarak çıktı sonucunu oluşturun. Arka uç senkronize edilir, böylece her çalışan çıkışı asenkronize olarak güncelleyebilir.
Java, konu koordinasyonu / işbirliği için iyi bir desteğe sahiptir.
Örnek olarak, bu CPU yoğun işlemler veya ağ uzunluğu işlemleri için iyi olurdu.