Parameter server Azure Cosmos DB for PostgreSQL
BERLAKU UNTUK: Azure Cosmos DB for PostgreSQL (didukung oleh ekstensi database Citus ke PostgreSQL)
Ada berbagai parameter server yang memengaruhi perilaku Azure Cosmos DB for PostgreSQL, baik dari PostgreSQL standar, dan khusus untuk Azure Cosmos DB for PostgreSQL. Parameter dapat ditetapkan dalam portal Azure untuk kluster. Di bawah kategori Pengaturan, pilih parameter Node pekerja atau parameter Node koordinator. Halaman ini memungkinkan Anda untuk mengatur parameter untuk semua simpul pekerja, atau hanya untuk simpul koordinator.
Parameter Azure Cosmos DB for PostgreSQL
Catatan
Kluster yang menjalankan versi ekstensi Citus yang lebih lama mungkin tidak menawarkan semua parameter yang tercantum di bawah ini.
Konfigurasi umum
citus.use_secondary_nodes (enum)
Menyetel kebijakan yang akan digunakan ketika memilih simpul untuk kueri SELECT. Jika diatur ke 'always', maka perencana hanya mengkueri simpul yang ditandai sebagai noderole 'sekunder' di pg_dist_node.
Nilai yang didukung untuk enum ini adalah:
- tidak pernah: (default) Semua bacaan terjadi pada node utama.
- selalu: Bacaan dijalankan terhadap node sekunder, dan pernyataan sisipkan/perbarui dinonaktifkan.
citus.cluster_name (text)
Menginformasikan perencana simpul koordinator klaster mana yang dikoordinasikannya. Setelah cluster_name diatur, perencana meminta simpul pekerja di kluster itu saja.
citus.enable_version_checks (boolean)
Meningkatkan versi Azure Cosmos DB for PostgreSQL memerlukan restart server (untuk mengambil pustaka bersama baru), diikuti oleh perintah ALTER EXTENSION UPDATE. Kegagalan untuk menjalankan kedua langkah tersebut berpotensi menimbulkan kesalahan atau crash. Azure Cosmos DB for PostgreSQL dengan demikian memvalidasi versi kode dan kecocokan ekstensi, dan kesalahan jika tidak.
Nilai ini default ke true, dan efektif pada koordinator. Dalam kasus yang jarang terjadi, proses peningkatan yang kompleks mungkin memerlukan pengaturan parameter ini ke false, sehingga menonaktifkan pemeriksaan.
citus.log_distributed_deadlock_detection (boolean)
Apakah mencatat pemrosesan terkait deteksi kebuntuan terdistribusi di log server. Ini default ke salah.
citus.distributed_deadlock_detection_factor (floating point)
Menyetel waktu untuk menunggu sebelum memeriksa kebuntuan terdistribusi. Secara khusus, waktu tunggu adalah nilai ini dikalikan dengan pengaturan deadlock_timeout PostgreSQL. Nilai defaultnya adalah 2
. Nilai menonaktifkan -1
deteksi kebuntuan terdistribusi.
citus.node_connection_timeout (bilangan bulat)
citus.node_connection_timeout
GUC menetapkan durasi maksimum (dalam milidetik) untuk menunggu pembentukan koneksi. Azure Cosmos DB for PostgreSQL menampilkan kesalahan jika waktu habis berlalu sebelum minimal sati koneksi pekerja dibuat. GUC ini mempengaruhi koneksi dari koordinator ke pekerja, dan pekerja satu sama lain.
- Default: lima detik
- Minimum: 10 milidetik
- Maksimum: satu jam
-- set to 30 seconds
ALTER DATABASE foo
SET citus.node_connection_timeout = 30000;
citus.log_remote_commands (boolean)
Catat semua perintah yang dikirim koordinator ke node pekerja. Contohnya:
-- reveal the per-shard queries behind the scenes
SET citus.log_remote_commands TO on;
-- run a query on distributed table "github_users"
SELECT count(*) FROM github_users;
Keluaran menunjukkan beberapa kueri yang berjalan pada pekerja karena kueri count(*)
tunggal pada koordinator.
NOTICE: issuing SELECT count(*) AS count FROM public.github_events_102040 github_events WHERE true
DETAIL: on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
NOTICE: issuing SELECT count(*) AS count FROM public.github_events_102041 github_events WHERE true
DETAIL: on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
NOTICE: issuing SELECT count(*) AS count FROM public.github_events_102042 github_events WHERE true
DETAIL: on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
... etc, one for each of the 32 shards
citus.show_shards_for_app_name_prefixes (teks)
Secara default, Azure Cosmos DB for PostgreSQL menyembunyikan pecahan dari daftar tabel yang diberikan PostgreSQL kepada klien SQL. Hal ini dilakukan karena ada beberapa pecahan per tabel terdistribusi, dan pecahan dapat mengganggu klien SQL.
GUC citus.show_shards_for_app_name_prefixes
Memungkinkan pecahan ditampilkan untuk klien terpilih yang ingin melihatnya. Nilai defaultnya adalah ''.
-- show shards to psql only (hide in other clients, like pgAdmin)
SET citus.show_shards_for_app_name_prefixes TO 'psql';
-- also accepts a comma separated list
SET citus.show_shards_for_app_name_prefixes TO 'psql,pg_dump';
Persembunyian shard dapat dinonaktifkan sepenuhnya menggunakan citus.override_table_visibility.
citus.override_table_visibility (boolean)
Menentukan apakah citus.show_shards_for_app_name_prefixes aktif. Nilai defaultnya adalah 'true'. Ketika diatur ke 'false', pecahan terlihat oleh semua aplikasi klien.
citus.use_citus_managed_tables (boolean)
Mengizinkan tabel lokal baru diakses oleh kueri pada node pekerja. Menambahkan semua tabel yang baru dibuat ke metadata Citus saat diaktifkan. Nilai defaultnya adalah 'false'.
citus.rebalancer_by_disk_size_base_cost (bilangan bulat)
Menggunakan strategi penyeimbangan ulang by_disk_size setiap grup shard mendapatkan biaya ini dalam byte yang ditambahkan ke ukuran disk aktualnya. Nilai ini digunakan untuk menghindari pembuatan keseimbangan yang buruk ketika ada sedikit data di beberapa pecahan. Asumsinya adalah bahwa bahkan pecahan kosong memiliki beberapa biaya, karena paralelisme dan karena kelompok pecahan kosong kemungkinan akan tumbuh di masa depan.
Nilai defaultnya adalah 100MB
.
Statistik Kueri
citus.stat_statements_purge_interval (bilangan bulat)
Mengatur frekuensi di mana daemon pemeliharaan menghapus rekaman dari citus_stat_statements yang tidak cocok di pg_stat_statements
. Nilai konfigurasi ini mengatur interval waktu antara pembersihan dalam detik, dengan nilai default 10. Nilai 0 menonaktifkan pembersihan.
SET citus.stat_statements_purge_interval TO 5;
Parameter ini efektif pada koordinator dan dapat diubah pada waktu proses.
citus.stat_statements_max (bilangan bulat)
Jumlah maksimum baris untuk disimpan di citus_stat_statements
. Default ke 50000, dan dapat diubah ke nilai apa pun dalam rentang 1000 - 10000000. Setiap baris memerlukan penyimpanan 140 byte, jadi menyetel stat_statements_max
ke nilai maksimum 10M akan menghabiskan memori 1,4 GB.
Mengubah GUC ini tidak berlaku sampai PostgreSQL dimulai ulang.
citus.stat_statements_track (enum)
Merekam statistik untuk citus_stat_statements
membutuhkan sumber daya CPU tambahan.
Ketika database mengalami beban, administrator dapat menonaktifkan pelacakan pernyataan dengan mengatur citus.stat_statements_track
ke none
.
- all: (default) Lacak semua pernyataan.
- none: Nonaktifkan pelacakan.
citus.stat_tenants_untracked_sample_rate
Laju pengambilan sampel untuk penyewa baru di citus_stat_tenants
. Tingkat dapat berkisar antara 0.0
dan 1.0
. Defaultnya adalah 1.0
berarti 100% kueri penyewa yang tidak terlacak diambil sampelnya. Mengaturnya ke nilai yang lebih rendah berarti bahwa penyewa yang sudah dilacak memiliki sampel kueri 100%, tetapi penyewa yang saat ini tidak terlacak hanya diambil sampelnya pada tingkat yang disediakan.
Pemuatan Data
citus.multi_shard_commit_protocol (enum)
Menyetel protokol commit yang akan digunakan ketika melakukan COPY pada tabel terdistribusi hash. Pada setiap penempatan shard individu, COPY dilakukan dalam blok transaksi untuk memastikan bahwa tidak ada data yang tertelan jika terjadi kesalahan selama COPY. Namun, ada kasus kegagalan tertentu di mana COPY berhasil di semua penempatan, tetapi kegagalan (perangkat keras) terjadi sebelum semua transaksi dilakukan. Parameter ini dapat digunakan untuk mencegah hilangnya data dalam kasus tersebut dengan memilih antara protokol commit berikut:
- 2pc: (default) Transaksi di mana SALINAN dilakukan pada penempatan pecahan pertama kali disiapkan menggunakan 2PC PostgreSQL dan kemudian dilakukan. Commit yang gagal dapat dipulihkan secara manual atau dibatalkan menggunakan COMMIT PREPARED atau ROLLBACK PREPARED. Saat menggunakan 2pc, max_prepared_transactions harus ditingkatkan pada semua pekerja, biasanya dengan nilai yang sama dengan max_connections.
- 1pc: Transaksi di mana COPY dilakukan pada penempatan shard dilakukan dalam satu putaran. Data mungkin hilang jika penerapan gagal setelah COPY berhasil pada semua penempatan (jarang).
citus.shard_replication_factor (bilangan bulat)
Mengatur faktor replikasi untuk pecahan yaitu, jumlah simpul tempat pecahan ditempatkan, dan default ke 1. Parameter ini dapat diatur pada run-time dan efektif pada koordinator. Nilai ideal untuk parameter ini tergantung pada ukuran kluster dan tingkat kegagalan simpul. Misalnya, Anda dapat meningkatkan faktor replikasi ini jika Anda menjalankan kluster besar dan mengamati kegagalan node secara lebih sering.
Konfigurasi Perencana
citus.local_table_join_policy (enum)
GUC ini menentukan bagaimana Azure Cosmos DB for PostgreSQL memindahkan data saat melakukan gabungan antara tabel lokal dan terdistribusi. Menyesuaikan kebijakan bergabung dapat membantu mengurangi jumlah data yang dikirim antar node pekerja.
Azure Cosmos DB for PostgreSQL mengirimkan tabel lokal atau terdistribusi ke simpul seperlunya untuk mendukung gabungan. Menyalin data tabel disebut sebagai “konversi.” Jika tabel lokal dikonversi, tabel tersebut dikirim ke pekerja mana pun yang memerlukan datanya untuk melakukan gabungan. Jika tabel terdistribusi dikonversi, maka tabel tersebut dikumpulkan dalam koordinator untuk mendukung gabungan. Perencana Azure Cosmos DB for PostgreSQL hanya mengirim baris yang diperlukan yang melakukan konversi.
Ada empat mode yang tersedia untuk mengekspresikan preferensi konversi:
- otomatis: (Default) Azure Cosmos DB for PostgreSQL mengonversi semua tabel lokal atau semua terdistribusi untuk mendukung gabungan tabel lokal dan terdistribusi. Azure Cosmos DB for PostgreSQL memutuskan mana yang akan dikonversi menggunakan heuristik. Ini mengonversi tabel terdistribusi jika digabungkan menggunakan filter konstanta pada indeks unik (seperti kunci primer). Konversi memastikan lebih sedikit data yang dipindahkan antar pekerja.
- tidak pernah: Azure Cosmos DB for PostgreSQL tidak mengizinkan gabungan antara tabel lokal dan terdistribusi.
- prefer-local: Azure Cosmos DB for PostgreSQL lebih suka mengonversi tabel lokal untuk mendukung gabungan tabel lokal dan terdistribusi.
- prefer-distributed: Azure Cosmos DB for PostgreSQL lebih suka mengonversi tabel terdistribusi untuk mendukung gabungan tabel lokal dan terdistribusi. Jika tabel terdistribusi berukuran besar, menggunakan opsi ini dapat mengakibatkan banyak data berpindah antar pekerja.
Misalnya, asumsikan citus_table
adalah tabel terdistribusi yang didistribusikan oleh kolom x
, dan postgres_table
adalah tabel lokal:
CREATE TABLE citus_table(x int primary key, y int);
SELECT create_distributed_table('citus_table', 'x');
CREATE TABLE postgres_table(x int, y int);
-- even though the join is on primary key, there isn't a constant filter
-- hence postgres_table will be sent to worker nodes to support the join
SELECT * FROM citus_table JOIN postgres_table USING (x);
-- there is a constant filter on a primary key, hence the filtered row
-- from the distributed table will be pulled to coordinator to support the join
SELECT * FROM citus_table JOIN postgres_table USING (x) WHERE citus_table.x = 10;
SET citus.local_table_join_policy to 'prefer-distributed';
-- since we prefer distributed tables, citus_table will be pulled to coordinator
-- to support the join. Note that citus_table can be huge.
SELECT * FROM citus_table JOIN postgres_table USING (x);
SET citus.local_table_join_policy to 'prefer-local';
-- even though there is a constant filter on primary key for citus_table
-- postgres_table will be sent to necessary workers because we are using 'prefer-local'.
SELECT * FROM citus_table JOIN postgres_table USING (x) WHERE citus_table.x = 10;
citus.limit_clause_row_fetch_count (bilangan bulat)
Menyetel jumlah baris untuk diambil per tugas untuk pengoptimalan klausa batas. Dalam beberapa kasus, pilih kueri dengan klausul batas mungkin perlu mengambil semua baris dari setiap tugas untuk menghasilkan hasil. Dalam kasus tersebut, dan di mana perkiraan akan menghasilkan hasil yang bermakna, nilai konfigurasi ini mengatur jumlah baris untuk diambil dari setiap pecahan. Perkiraan batas dinonaktifkan secara default dan parameter ini diatur ke -1. Parameter ini dapat diatur pada run-time dan efektif pada koordinator.
citus.count_distinct_error_rate (titik floating)
Azure Cosmos DB for PostgreSQL dapat menghitung perkiraan hitungan (berbeda) menggunakan ekstensi postgresql-hll. Entri konfigurasi ini mengatur tingkat kesalahan yang diinginkan saat menghitung hitungan (berbeda). 0.0, yang merupakan default, menonaktifkan perkiraan untuk menghitung (berbeda); dan 1.0 tidak memberikan jaminan tentang keakuratan hasil. Sebaiknya atur parameter ini ke 0.005 untuk hasil terbaik. Parameter ini dapat diatur pada run-time dan efektif pada koordinator.
citus.task_assignment_policy (enum)
Catatan
GUC ini hanya berlaku ketika shard_replication_factor lebih besar dari satu, atau untuk pertanyaan terhadap reference_tables.
Menyetel kebijakan yang akan digunakan saat menetapkan tugas untuk pekerja. Koordinator memberikan tugas kepada pekerja berdasarkan lokasi shard. Nilai konfigurasi ini menentukan kebijakan yang akan digunakan saat membuat penetapan ini. Saat ini, ada tiga kemungkinan kebijakan penugasan tugas yang dapat digunakan.
- serakah: Kebijakan serakah adalah default dan bertujuan untuk mendistribusikan tugas secara merata di seluruh pekerja.
- round-robin: Kebijakan round-robin menugaskan tugas untuk pekerja dalam mode round-robin bergantian di antara replika yang berbeda. Kebijakan ini memungkinkan pemanfaatan klaster yang lebih baik ketika jumlah shard untuk tabel rendah dibandingkan dengan jumlah pekerja.
- replika pertama: Kebijakan replika pertama menetapkan tugas berdasarkan urutan penyisipan penempatan (replika) untuk pecahan. Dengan kata lain, kueri fragmen untuk pecahan ditetapkan untuk pekerja yang memiliki replika pertama dari pecahan itu. Metode ini memungkinkan Anda untuk memiliki jaminan yang kuat tentang pecahan mana yang digunakan pada simpul mana (yaitu, jaminan residensi memori yang lebih kuat).
Parameter ini dapat diatur pada run-time dan efektif pada koordinator.
citus.enable_non_colocated_router_query_pushdown (boolean)
Mengaktifkan perencana router untuk kueri yang mereferensikan tabel terdistribusi yang tidak terkolokasi.
Perencana router hanya diaktifkan untuk kueri yang mereferensikan tabel terdistribusi yang dikolokasi karena jika tidak, shard mungkin tidak berada pada simpul yang sama. Mengaktifkan bendera ini memungkinkan pengoptimalan untuk kueri yang mereferensikan tabel tersebut, tetapi kueri mungkin tidak berfungsi setelah menyeimbangkan ulang shard atau mengubah jumlah shard tabel tersebut.
Default adalah off
.
Transfer Data Menengah
citus.max_intermediate_result_size (bilangan bulat)
Ukuran maksimum dalam KB hasil menengah untuk CTEs yang tidak dapat didorong ke simpul pekerja untuk dieksekusi, dan untuk subkueri yang kompleks. Defaultnya adalah 1 GB, dan nilai -1 berarti tidak ada batas. Kueri yang melebihi batas dibatalkan dan menghasilkan pesan kesalahan.
DDL
citus.enable_schema_based_sharding
Dengan parameter diatur ke ON
, semua skema yang dibuat didistribusikan secara default. Skema terdistribusi secara otomatis dikaitkan dengan grup kolokasi individual sehingga tabel yang dibuat dalam skema tersebut dikonversi ke tabel terdistribusi yang dikolokasi tanpa kunci shard. Pengaturan ini dapat dimodifikasi untuk sesi individual.
Untuk contoh penggunaan GUC ini, lihat cara merancang layanan mikro.
Konfigurasi Pelaksana
Umum
citus.all_modifications_commutative
Azure Cosmos DB for PostgreSQL memberlakukan aturan komutativitas dan memperoleh kunci yang sesuai untuk memodifikasi operasi untuk menjamin kebenaran perilaku. Misalnya, ini mengasumsikan bahwa pernyataan INSERT bepergian dengan pernyataan INSERT lain, tetapi tidak dengan pernyataan UPDATE atau DELETE. Demikian pula, ini mengasumsikan bahwa pernyataan UPDATE atau DELETE tidak berubah-ubah dengan pernyataan UPDATE atau DELETE lainnya. Tindakan pencegahan ini berarti bahwa UPDATEs dan DELETEs memerlukan Azure Cosmos DB for PostgreSQL untuk memperoleh kunci yang lebih kuat.
Jika Anda memiliki pernyataan UPDATE yang berkomunikasi dengan INSAT Anda atau UPDATes lainnya, maka Anda dapat melonggarkan asumsi komutativitas ini dengan mengatur parameter ini ke true. Ketika parameter ini diatur ke true, semua perintah dianggap komutasitif dan mengklaim kunci bersama, yang dapat meningkatkan throughput keseluruhan. Parameter ini dapat diatur pada run-time dan efektif pada koordinator.
citus.remote_task_check_interval (bilangan bulat)
Mengatur frekuensi di mana Azure Cosmos DB for PostgreSQL memeriksa status pekerjaan yang dikelola oleh pelaksana pelacak tugas. Ini default ke 10 ms. Koordinator menetapkan tugas kepada pekerja, lalu secara teratur memeriksa setiap kemajuan tugas dengan mereka. Nilai konfigurasi ini menetapkan interval waktu antara dua pemeriksaan konsekuensi. Parameter ini efektif pada koordinator dan dapat diatur pada saat runtime.
citus.task_executor_type (enum)
Azure Cosmos DB for PostgreSQL memiliki tiga jenis pelaksana untuk menjalankan kueri SELECT terdistribusi. Pelaksana yang diinginkan dapat dipilih dengan mengatur parameter konfigurasi ini. Nilai yang diterima untuk parameter ini adalah:
- adaptif: Default. Ini optimal untuk respons cepat terhadap kueri yang melibatkan agregasi dan gabungan colocated yang mencakup beberapa pecahan.
- pelacak tugas: Pelaksana pelacak tugas sangat cocok untuk kueri yang berjalan lama dan kompleks yang memerlukan pengocokan data di seluruh simpul pekerja dan manajemen sumber daya yang efisien.
- real-time: (tidak digunakan lagi) Melayani tujuan yang sama dengan pelaksana adaptif, tetapi kurang fleksibel dan dapat menyebabkan lebih banyak tekanan koneksi pada simpul pekerja.
Parameter ini dapat diatur pada run-time dan efektif pada koordinator.
citus.multi_task_query_log_level (enum) {#multi_task_logging}
Mengatur tingkat log untuk setiap kueri yang menghasilkan lebih dari satu tugas (yaitu, yang mengenai lebih dari satu pecahan). Pengelogan berguna selama migrasi aplikasi multipenyewa, karena Anda dapat memilih untuk melakukan kesalahan atau memperingatkan kueri tersebut, untuk menemukannya dan menambahkan filter tenant_id ke dalamnya. Parameter ini dapat diatur pada run-time dan efektif pada koordinator. Nilai default untuk parameter ini adalah 'off'.
Nilai yang didukung untuk enum ini adalah:
- nonaktif: Nonaktifkan pembuatan log kueri apa pun yang menghasilkan beberapa tugas (yaitu, rentang beberapa pecahan)
- debug: Pernyataan log pada tingkat keparahan DEBUG.
- log: Mencatat pernyataan pada tingkat keparahan LOG. Baris log menyertakan kueri SQL yang dijalankan.
- pemberitahuan: Mencatat pernyataan pada tingkat keparahan NOTICE.
- peringatan: Mencatat pernyataan pada tingkat keparahan PERINGATAN.
- error: Mencatat pernyataan pada tingkat keparahan ERROR.
Ini bisa berguna untuk digunakan error
selama pengujian pengembangan, dan tingkat log yang lebih rendah seperti log
selama penyebaran produksi aktual.
Memilih log
akan menyebabkan kueri multi-tugas muncul di log database dengan kueri itu sendiri yang ditampilkan setelah "STATEMENT".
LOG: multi-task query about to be executed
HINT: Queries are split to multiple tasks if they have to be split into several queries on the workers.
STATEMENT: select * from foo;
citus.propagate_set_commands (enum)
Menentukan perintah SET mana yang disebarkan dari koordinator ke pekerja. Nilai default untuk parameter ini adalah 'none'.
Nilai yang didukung adalah:
- none: tidak ada perintah SET yang disebarkan.
- local: hanya perintah SET LOKAL yang disebarkan.
citus.create_object_propagation (enum)
Mengontrol perilaku pernyataan CREATE dalam transaksi untuk objek yang didukung.
Saat objek dibuat dalam blok transaksi multi-pernyataan, Azure Cosmos DB for PostgreSQL mengalihkan mode berurutan untuk memastikan objek yang dibuat terlihat oleh pernyataan selanjutnya pada pecahan. Namun, peralihan ke mode berurutan tidak selalu diinginkan. Dengan mengesampingkan perilaku ini, pengguna dapat menukar performa untuk konsistensi transaksi penuh dalam pembuatan objek baru.
Nilai default untuk parameter ini adalah 'immediate'.
Nilai yang didukung adalah:
- immediate: menimbulkan kesalahan dalam transaksi di mana operasi paralel seperti create_distributed_table terjadi sebelum mencoba CREATE TYPE.
- automatic: menangguhkan pembuatan jenis saat berbagi transaksi dengan operasi paralel pada tabel terdistribusi. Mungkin ada beberapa ketidakkonsistensian antara objek database mana yang ada pada simpul yang berbeda.
- deferred: kembali ke perilaku pra-11.0, yang seperti otomatis tetapi dengan huruf besar/kecil lainnya. Kami merekomendasikan pengaturan otomatis daripada ditangguhkan, kecuali Anda memerlukan kompatibilitas mundur yang benar.
Untuk contoh GUC ini dalam tindakan, lihat penyebaran jenis.
citus.enable_repartition_joins (boolean)
Biasanya, mencoba melakukan gabungan partisi ulang dengan eksekutor adaptif gagal dengan pesan kesalahan. Namun pengaturan citus.enable_repartition_joins
ke true memungkinkan Azure Cosmos DB for PostgreSQL untuk beralih sementara ke pelaksana pelacak tugas untuk melakukan gabungan. Nilai defaultnya adalah false.
citus.enable_repartitioned_insert_select (boolean)
Secara default, sebuah INSERT INTO … Pernyataan SELECT yang tidak dapat didorong ke bawah mencoba mempartisi ulang baris dari pernyataan SELECT dan mentransfernya di antara pekerja untuk penyisipan. Namun, jika tabel target memiliki terlalu banyak pecahan, maka partisi ulang mungkin tidak akan berjalan dengan baik. Overhead pemrosesan interval pecahan saat menentukan cara mempartisi hasilnya terlalu besar.
Partisi ulang dapat dinonaktifkan secara manual dengan menyetel citus.enable_repartitioned_insert_select
ke false.
citus.enable_binary_protocol (boolean)
Menyetel parameter ini ke true menginstruksikan node koordinator untuk menggunakan format serialisasi biner PostgreSQL (bila berlaku) untuk mentransfer data dengan pekerja. Beberapa jenis kolom tidak mendukung serialisasi biner.
Mengaktifkan parameter ini sangat berguna ketika pekerja harus mengembalikan data dalam jumlah besar. Contohnya adalah ketika banyak baris yang diminta, baris memiliki banyak kolom, atau mereka menggunakan tipe lebar seperti hll
dari ekstensi postgresql-hll.
Nilai defaultnya adalah true
. Saat diatur ke false
, semua hasil dikodekan dan ditransfer dalam format teks.
citus.max_adaptive_executor_pool_size (bilangan bulat)
Max_adaptive_executor_pool_size membatasi koneksi pekerja dari sesi saat ini. GUC ini berguna untuk:
- Mencegah satu backend mendapatkan semua sumber daya pekerja
- Menyediakan manajemen prioritas: tentukan sesi prioritas rendah dengan max_adaptive_executor_pool_size rendah, dan sesi prioritas tinggi dengan nilai lebih tinggi
Nilai defaultnya adalah 16.
citus.executor_slow_start_interval (bilangan bulat)
Waktu untuk menunggu dalam milidetik antara membuka koneksi ke node pekerja yang sama.
Ketika tugas individu dari kueri multi-pecahan membutuhkan sedikit waktu, tugas tersebut seringkali dapat diselesaikan melalui satu sambungan (seringkali sudah di-cache). Untuk menghindari membuka lebih banyak sambungan secara berlebihan, pelaksana menunggu di antara upaya koneksi untuk jumlah milidetik yang dikonfigurasi. Di akhir interval, ini meningkatkan jumlah koneksi yang diizinkan untuk dibuka di lain waktu.
Untuk kueri yang panjang (yang membutuhkan waktu >500 ms), awal yang lambat mungkin menambah latensi, tetapi untuk kueri pendek lebih cepat. Nilai default adalah 10 md.
citus.max_cached_conns_per_worker (bilangan bulat)
Setiap backend membuka koneksi ke pekerja untuk menanyakan pecahan. Di akhir transaksi, jumlah koneksi yang dikonfigurasi tetap terbuka untuk mempercepat perintah selanjutnya. Meningkatkan nilai ini mengurangi latensi kueri multi-pecahan, tetapi juga meningkatkan overhead pada pekerja.
Nilai default adalah 1. Nilai yang lebih besar seperti 2 mungkin berguna untuk kluster yang menggunakan sejumlah kecil sesi bersamaan, tetapi tidak bijaksana untuk melangkah lebih jauh (misalnya, 16 akan terlalu tinggi).
citus.force_max_query_parallelization (boolean)
Mensimulasikan eksekutor real-time yang sudah usang dan sekarang tidak ada. Parameter ini digunakan untuk membuka koneksi sebanyak mungkin untuk memaksimalkan paralelisasi kueri.
Ketika GUC ini diaktifkan, Azure Cosmos DB for PostgreSQL memaksa eksekutor adaptif untuk menggunakan koneksi sebanyak mungkin saat menjalankan kueri terdistribusi paralel. Jika tidak diaktifkan, pelaksana mungkin memilih untuk menggunakan lebih sedikit koneksi untuk mengoptimalkan throughput eksekusi kueri secara keseluruhan. Secara internal, pengaturan ini akan true
berakhir menggunakan satu koneksi per tugas.
Satu tempat di mana parameter ini berguna dalam transaksi yang kueri pertamanya ringan dan membutuhkan beberapa koneksi, sementara kueri berikutnya akan mendapat manfaat dari lebih banyak koneksi. Azure Cosmos DB for PostgreSQL memutuskan berapa banyak koneksi yang akan digunakan dalam transaksi berdasarkan pernyataan pertama, yang dapat membatasi kueri lain kecuali kami menggunakan GUC untuk memberikan petunjuk.
BEGIN;
-- add this hint
SET citus.force_max_query_parallelization TO ON;
-- a lightweight query that doesn't require many connections
SELECT count(*) FROM table WHERE filter = x;
-- a query that benefits from more connections, and can obtain
-- them since we forced max parallelization above
SELECT ... very .. complex .. SQL;
COMMIT;
Nilai defaultnya adalah false.
Konfigurasi pelaksana pelacak tugas
citus.task_tracker_delay (bilangan bulat)
Parameter ini mengatur waktu tidur pelacak tugas antara putaran manajemen tugas dan default menjadi 200 ms. Proses pelacak tugas bangun secara teratur, berjalan di atas semua tugas yang ditugaskan untuk itu, dan menjadwalkan dan menjalankan tugas-tugas ini. Kemudian, pelacak tugas tidur untuk jangka waktu sebelum berjalan di atas tugas-tugas ini lagi. Nilai konfigurasi ini menentukan lamanya masa tidur tersebut. Parameter ini efektif pada pekerja dan perlu diubah dalam file postgresql.conf. Setelah mengedit file konfigurasi, pengguna dapat mengirim sinyal SIGHUP atau memulai ulang server agar perubahan ini diterapkan.
Parameter ini dapat menurun untuk memangkas penundaan yang disebabkan karena pelaksana pelacak tugas dengan mengurangi kesenjangan waktu antara putaran manajemen. Mengurangi keterlambatan berguna dalam kasus ketika kueri shard pendek dan karenanya memperbarui status mereka secara teratur.
citus.max_assign_task_batch_size (bilangan bulat)
Pelaksana pelacak tugas pada koordinator secara sinkron menetapkan tugas dalam batch ke daemon pada pekerja. Parameter ini menetapkan jumlah tugas maksimum yang akan ditetapkan dalam satu batch. Memilih ukuran batch yang lebih besar memungkinkan penetapan tugas yang lebih cepat. Namun, jika jumlah pekerja besar, maka mungkin perlu waktu lebih lama bagi semua pekerja untuk mendapatkan tugas. Parameter ini dapat diatur pada run-time dan efektif pada koordinator.
citus.max_running_tasks_per_node (bilangan bulat)
Proses pelacak tugas menjadwalkan dan menjalankan tugas yang ditetapkan sebagaimana mestinya. Nilai konfigurasi ini menetapkan jumlah maksimum tugas untuk dieksekusi secara bersamaan pada satu simpul pada waktu tertentu dan default menjadi 8.
Batas tersebut memastikan bahwa Anda tidak memiliki banyak tugas yang mengenai disk secara bersamaan dan membantu menghindari pertentangan I/O disk. Jika kueri Anda disajikan dari memori atau SSD, Anda dapat meningkatkan max_running_tasks_per_node tanpa khawatir.
citus.partition_buffer_size (bilangan bulat)
Menyetel ukuran penyangga yang akan digunakan untuk operasi partisi dan asali menjadi 8 MB. Azure Cosmos DB for PostgreSQL memungkinkan data tabel dipartisi ulang ke dalam beberapa file ketika dua tabel besar sedang digabungkan. Setelah buffer partisi ini terisi, data yang dipartisi ulang disiram ke dalam file di disk. Entri konfigurasi ini dapat diatur pada waktu proses dan efektif pada pekerja.
Jelaskan keluaran
citus.explain_all_tasks (boolean)
Secara default, Azure Cosmos DB for PostgreSQL menunjukkan output dari satu tugas arbitrer saat menjalankan EXPLAIN pada kueri terdistribusi. Dalam kebanyakan kasus, output penjelasan mirip di seluruh tugas. Terkadang, beberapa tugas direncanakan secara berbeda atau memiliki waktu eksekusi yang jauh lebih tinggi. Dalam kasus tersebut, dapat berguna untuk mengaktifkan parameter ini, setelah itu output EXPLAIN mencakup semua tugas. Menjelaskan semua tugas dapat menyebabkan EXPLAIN memakan waktu lebih lama.
citus.explain_analyze_sort_method (enum)
Menentukan metode pengurutan tugas dalam output EXPLAIN ANALYZE. Nilai default citus.explain_analyze_sort_method
adalah execution-time
.
Nilai yang didukung adalah:
- waktu eksekusi: urutkan berdasarkan waktu eksekusi.
- taskId: urutkan menurut ID tugas.
Parameter PgBouncer terkelola
Parameter PgBouncer terkelola berikut dapat dikonfigurasi pada simpul atau koordinator tunggal.
Nama Parameter | Deskripsi | Default |
---|---|---|
pgbouncer.default_pool_size | Atur nilai parameter ini ke jumlah koneksi per pasangan pengguna/database. | 295 |
pgbouncer.ignore_startup_parameters | Daftar parameter yang dipisahkan koma yang dapat diabaikan oleh PgBouncer. Misalnya, Anda dapat membiarkan PgBouncer mengabaikan parameter extra_float_digits . Beberapa parameter diizinkan, yang lain menimbulkan kesalahan. Kemampuan ini diperlukan untuk mentolerir JDBC yang terlalu antusias ingin mengatur 'extra_float_digits=2' secara tanpa syarat dalam paket startup. Gunakan opsi ini jika pustaka yang Anda gunakan melaporkan kesalahan seperti pq: unsupported startup parameter: extra_float_digits . |
extra_float_digits, ssl_renegotiation_limit |
pgBouncer.max_client_conn | Tetapkan nilai parameter ini ke jumlah tertinggi sambungan klien ke PgBouncer yang ingin Anda dukung. | 2000 |
pgBouncer.min_pool_size | Tambahkan lebih banyak sambungan server ke kumpulan jika di bawah angka ini. | 0 (Dinonaktifkan) |
pgBouncer.pool_mode | Atur nilai parameter ini ke TRANSAKSI untuk pengelompokan transaksi (yang merupakan pengaturan yang disarankan untuk sebagian besar beban kerja). | TRANSAKSI |
pgbouncer.query_wait_timeout | Waktu maksimum (dalam detik) kueri diperbolehkan untuk menunggu eksekusi. Jika kueri tidak ditetapkan ke server selama waktu tersebut, klien akan terputus. | 20d |
pgbouncer.server_idle_timeout | Jika koneksi server telah menganggur lebih dari sekian detik ini, koneksi ditutup. Jika 0 maka batas waktu ini dinonaktifkan. | 60s |
Parameter PostgreSQL
- Gaya Tanggal - Mengatur format tampilan untuk nilai tanggal dan waktu
- Gaya Interval - Mengatur format tampilan untuk nilai interval
- Zona Waktu - Mengatur zona waktu untuk menampilkan dan menginterpretasikan stempel waktu
- application_name - Mengatur nama aplikasi yang akan dilaporkan dalam statistik dan log
- array_nulls - Mengaktifkan input elemen NULL dalam array
- autovacuum - Memulai subproses autovacuum
- autovacuum_analyze_scale_factor - Jumlah sisipan, pembaruan, atau penghapusan tuple sebelum menganalisis sebagai sebagian kecil dari reltuples
- autovacuum_analyze_threshold - Jumlah minimum sisipan, pembaruan, atau penghapusan tuple sebelum menganalisis
- autovacuum_naptime - Saatnya tidur di antara autovacuum berjalan
- autovacuum_vacuum_cost_delay - Keterlambatan biaya vakum dalam milidetik, untuk autovacuum
- autovacuum_vacuum_cost_limit - Jumlah biaya vakum tersedia sebelum tidur siang, untuk autovacuum
- autovacuum_vacuum_scale_factor - Jumlah pembaruan atau penghapusan tuple sebelum vakum sebagai sebagian kecil dari reltuples
- autovacuum_vacuum_threshold - Jumlah minimum pembaruan atau penghapusan tuple sebelum vakum
- autovacuum_work_mem - Mengatur memori maksimum yang akan digunakan oleh setiap proses pekerja autovacuum
- backend_flush_after - Jumlah halaman setelah penulisan yang dilakukan sebelumnya disiram ke disk
- backslash_quote - Mengatur apakah "'" diizinkan dalam literal string
- bgwriter_delay - Penulis latar belakang waktu tidur di antara putaran
- backend_flush_after - Jumlah halaman setelah penulisan yang dilakukan sebelumnya disiram ke disk
- bgwriter_lru_maxpages - Penulis latar belakang jumlah maksimum halaman LRU untuk memerah per putaran
- bgwriter_lru_multiplier - Kelipatan penggunaan penyangga rata-rata menjadi gratis per putaran
- bytea_output - Mengatur format output untuk bytea
- check_function_bodies - Memeriksa badan fungsi selama fungsi CREATE
- checkpoint_completion_target - Waktu yang dihabiskan untuk menyiram penyangga kotor selama pemeriksaan, sebagai pecahan interval pos pemeriksaan
- checkpoint_timeout - Mengatur waktu maksimum antara titik pemeriksaan WAL otomatis
- checkpoint_warning - Memungkinkan peringatan jika segmen pos pemeriksaan diisi lebih sering daripada ini
- client_encoding - Mengatur pengkodean set karakter klien
- client_min_messages - Mengatur tingkat pesan yang dikirim ke klien
- commit_delay - Mengatur keterlambatan mikrodetik antara transaksi commit dan flushing WAL ke disk
- commit_siblings - Menetapkan minimum transaksi terbuka bersamaan sebelum melakukan commit_delay
- constraint_exclusion - Memungkinkan perencana menggunakan batasan untuk mengoptimalkan kueri
- cpu_index_tuple_cost - Mengatur perkiraan perencana tentang biaya pemrosesan setiap entri indeks selama pemindaian indeks
- cpu_operator_cost - Menetapkan perkiraan perencana tentang biaya pemrosesan setiap operator atau panggilan fungsi
- cpu_tuple_cost - Menetapkan perkiraan perencana tentang biaya pemrosesan setiap tuple (baris)
- cursor_tuple_fraction - Mengatur perkiraan perencana dari pecahan baris kursor yang diambil
- deadlock_timeout - Mengatur jumlah waktu, dalam milidetik, untuk menunggu di kunci sebelum memeriksa kebuntuan
- debug_pretty_print - Inden mengurai dan merencanakan tampilan pohon
- debug_print_parse - Mencatat setiap pohon parse kueri
- debug_print_plan - Mencatat setiap rencana eksekusi kueri
- debug_print_rewritten - Mencatat setiap pohon parse ditulis ulang setiap kueri
- default_statistics_target - Menetapkan target statistik default
- default_tablespace - Mengatur ruang tabel default untuk membuat tabel dan indeks di
- default_text_search_config - Mengatur konfigurasi pencarian teks default
- default_transaction_deferrable - Menetapkan status default yang dapat ditangguhkan dari transaksi baru
- default_transaction_isolation - Menetapkan tingkat isolasi transaksi setiap transaksi baru
- default_transaction_read_only - Menetapkan status baca-saja default transaksi baru
- default_with_oids - Membuat tabel baru dengan OID secara default
- effective_cache_size - Mengatur asumsi perencana tentang ukuran cache disk
- enable_bitmapscan - Memungkinkan perencana menggunakan paket bitmap-scan
- enable_gathermerge - Memungkinkan penggunaan rencana gabungan kumpulkan perencana
- enable_hashagg - Memungkinkan penggunaan rencana agregasi hashed perencana
- enable_hashjoin - Memungkinkan penggunaan paket hash join perencana
- enable_indexonlyscan - Memungkinkan penggunaan paket index-only-scan perencana
- enable_indexscan - Memungkinkan penggunaan rencana pemindaian indeks perencana
- enable_material - Memungkinkan penggunaan materialisasi perencana
- enable_mergejoin - Memungkinkan penggunaan rencana gabungan perencana
- enable_nestloop - Memungkinkan penggunaan rencana gabungan loop bertumpuk perencana
- enable_seqscan - Memungkinkan penggunaan paket pemindaian berurutan perencana
- enable_sort - Memungkinkan penggunaan langkah-langkah pengurutan eksplisit perencana
- enable_tidscan - Memungkinkan penggunaan paket pemindaian TID perencana
- escape_string_warning - Memperingatkan tentang backslash melarikan diri dalam literal string biasa
- exit_on_error - Mengakhiri sesi pada kesalahan apa pun
- extra_float_digits - Mengatur jumlah digit yang ditampilkan untuk nilai titik pecahan
- force_parallel_mode - Kekuatan penggunaan fasilitas kueri paralel
- from_collapse_limit - Menyetel ukuran daftar FROM di luar subkueri yang tidak diciutkan
- geqo - Memungkinkan pengoptimalan kueri genetik
- geqo_effort - GEQO: upaya digunakan untuk mengatur default untuk parameter GEQO lainnya
- geqo_generations - GEQO: jumlah iterasi algoritma
- geqo_pool_size - GEQO: jumlah individu dalam populasi
- geqo_seed - GEQO: benih untuk pemilihan jalur acak
- geqo_selection_bias - GEQO: tekanan selektif dalam populasi
- geqo_threshold - Mengatur ambang batas item FROM di mana GEQO digunakan
- gin_fuzzy_search_limit - Mengatur hasil maksimum yang diizinkan untuk pencarian yang tepat oleh GIN
- gin_pending_list_limit - Mengatur ukuran maksimum daftar tertunda untuk indeks GIN
- idle_in_transaction_session_timeout - Menetapkan durasi maksimum yang diizinkan dari setiap transaksi idling
- join_collapse_limit - Menyetel ukuran FROM-list di mana konstruksi JOIN tidak diratakan
- lc_monetary - Mengatur lokal untuk memformat jumlah moneter
- lc_numeric - Mengatur lokal untuk memformat angka
- lo_compat_privileges - Mengaktifkan mode kompatibilitas mundur untuk pemeriksaan hak istimewa pada objek besar
- lock_timeout - Mengatur durasi maksimum yang diizinkan (dalam milidetik) dari setiap menunggu kunci. 0 matikan ini
- log_autovacuum_min_duration - Mengatur waktu eksekusi minimum di atas tempat tindakan autovacuum dicatat
- log_connections - Log setiap sambungan berhasil
- log_destination - Mengatur tujuan untuk output log server
- log_disconnections - Log akhir sesi, termasuk durasi
- log_duration - Catat durasi setiap pernyataan SQL yang telah selesai
- log_error_verbosity - Mengatur verbositas pesan yang dicatat
- log_lock_waits - Penantian kunci panjang log
- log_min_duration_statement - Mengatur waktu eksekusi minimum (dalam milidetik) di atas pernyataan mana yang dicatat. -1 menonaktifkan durasi pernyataan pencatatan
- log_min_error_statement - Menyebabkan semua pernyataan menghasilkan kesalahan pada atau di atas level ini untuk dicatat
- log_min_messages - Mengatur tingkat pesan yang dicatat
- log_replication_commands - Log setiap perintah replikasi
- log_statement - Mengatur tipe pernyataan yang dicatat
- log_statement_stats - Untuk setiap kueri, tulis performa statistik kinerja kumulatif ke log server
- log_temp_files - Mencatat penggunaan file sementara yang lebih besar dari jumlah kilobyte ini
- maintenance_work_mem - Mengatur memori maksimum yang akan digunakan untuk operasi pemeliharaan
- max_parallel_workers - Menyetel jumlah maksimum pekerja paralel yang dapat aktif pada satu waktu
- max_parallel_workers_per_gather - Menetapkan jumlah maksimum proses paralel per simpul eksekutor
- max_pred_locks_per_page - Mengatur jumlah maksimum tuple predikat yang dikunci per halaman
- max_pred_locks_per_relation - Mengatur jumlah maksimum halaman dan tuple yang dikunci predikat per relasi
- max_standby_archive_delay - Mengatur penundaan maksimum sebelum membatalkan kueri ketika server siaga panas memproses data WAL yang diarsipkan
- max_standby_archive_streaming_delay - Mengatur penundaan maksimum sebelum membatalkan kueri ketika server siaga panas memproses data WAL yang dialirkan
- max_sync_workers_per_subscription - Jumlah maksimum pekerja sinkronisasi tabel per langganan
- max_wal_size - Mengatur ukuran WAL yang memicu titik pemeriksaan
- min_parallel_index_scan_size - Mengatur jumlah minimum data indeks untuk pemindaian paralel
- min_wal_size - Mengatur ukuran minimum untuk mengecilkan WAL ke
- operator_precedence_warning - Memancarkan peringatan untuk konstruksi yang mengubah makna sejak PostgreSQL 9.4
- parallel_setup_cost - Mengatur perkiraan perencana tentang biaya memulai proses pekerja untuk kueri paralel
- parallel_tuple_cost - Mengatur perkiraan perencana tentang biaya melewati setiap tuple (baris) dari pekerja ke backend utama
- pg_stat_statements.save - Menyimpan pg_stat_statements di seluruh pematian server
- pg_stat_statements.track - Memilih pernyataan mana yang dilacak oleh pg_stat_statements
- pg_stat_statements.track_utility - Memilih apakah perintah utilitas dilacak oleh pg_stat_statements
- quote_all_identifiers - Saat menghasilkan fragmen SQL, kutip semua pengidentifikasi
- random_page_cost - Mengatur perkiraan perencana tentang biaya halaman disk yang diambil secara tidak berurutan
- row_security - Mengaktifkan keamanan baris
- search_path - Menyetel urutan pencarian skema untuk nama yang tidak memenuhi syarat skema
- seq_page_cost - Mengatur perkiraan perencana tentang biaya halaman disk yang diambil secara berurutan
- session_replication_role - Mengatur perilaku sesi untuk pemicu dan menulis ulang aturan
- standard_conforming_strings - Penyebab '...' string untuk mengobati backslashes secara harfiah
- statement_timeout - Menyetel durasi maksimum yang diizinkan (dalam milidetik) dari pernyataan apa pun. 0 matikan ini
- synchronize_seqscans - Mengaktifkan pemindaian berurutan yang disinkronkan
- synchronous_commit - Mengatur tingkat sinkronisasi transaksi saat ini
- tcp_keepalives_count - Jumlah maksimum pengiriman ulang keepalive TCP
- tcp_keepalives_idle - Waktu antara mengeluarkan keepalives TCP
- tcp_keepalives_interval - Waktu antara pengiriman ulang keepalive TCP
- temp_buffers - Mengatur jumlah maksimum penyangga sementara yang digunakan oleh setiap sesi database
- temp_tablespaces - Mengatur ruang tabel yang akan digunakan untuk tabel sementara dan mengurutkan file
- track_activities - Mengumpulkan informasi tentang menjalankan perintah
- track_counts - Mengumpulkan statistik tentang aktivitas database
- track_functions - Mengumpulkan statistik tingkat fungsi pada aktivitas database
- track_io_timing - Mengumpulkan statistik waktu untuk aktivitas I/O database
- transform_null_equals - Memperlakukan "expr=NULL" sebagai "expr IS NULL"
- vacuum_cost_delay - Keterlambatan biaya vakum dalam milidetik
- vacuum_cost_limit - Jumlah biaya vakum tersedia sebelum tidur siang
- vacuum_cost_page_dirty - Biaya vakum untuk halaman yang dikotori oleh vakum
- vacuum_cost_page_hit - Biaya vakum untuk halaman yang ditemukan di cache buffer
- vacuum_cost_page_miss - Biaya vakum untuk halaman yang tidak ditemukan di cache buffer
- vacuum_defer_cleanup_age - Jumlah transaksi di mana pembersihan VACUUM dan HOT harus ditangguhkan, jika ada
- vacuum_freeze_min_age - Usia minimum di mana VACUUM harus membekukan baris tabel
- vacuum_freeze_table_age - Usia di mana VACUUM harus memindai seluruh tabel untuk membekukan tuple
- vacuum_multixact_freeze_min_age - Usia minimum di mana VACUUM harus membekukan MultiXactId dalam baris tabel
- vacuum_multixact_freeze_table_age - Usia multixact di mana VACUUM harus memindai seluruh tabel untuk membekukan tupel
- wal_receiver_status_interval - Mengatur interval maksimum antara laporan status penerima WAL ke primer
- wal_writer_delay - Waktu antara flush WAL dilakukan dalam penulis WAL
- wal_writer_flush_after - Jumlah WAL yang ditulis oleh penulis WAL yang memicu flush
- work_mem - Mengatur jumlah memori yang akan digunakan oleh operasi pengurutan internal dan tabel hash sebelum menulis ke file disk sementara
- xmlbinary - Mengatur bagaimana nilai biner akan dikodekan dalam XML
- xmloption - Mengatur apakah data XML dalam operasi penguraian dan serialisasi implisit akan dianggap sebagai dokumen atau fragmen konten
Langkah berikutnya
- Bentuk konfigurasi lain, selain parameter server, adalah opsi konfigurasi sumber daya dalam kluster.
- Basis data PostgreSQL yang mendasarinya juga memiliki parameter konfigurasi.