Skip to main content

Posts

Showing posts with the label PostgreSQL11

PostgreSQL11 Yenilikleri 4 - Stored Procedure

Merhaba, PostgreSQL 10 ve öncesine kadar Stored Procedure'e en yakın veritabanı objesi olarak fonksiyon bulunuyordu. İkisi arasındaki en büyük fark fonksiyon bir sonuç döndürürken, Stored Procedure'ün buna ihtiyaç duymaması. PostgreSQL 11 ile gelen özelliklerden biri de yeni eklenen veritabanı objesi olan Stored Procedure'ler oldu. Stored Procedure CREATE OR REPLACE PROCEDURE ...   ile oluşturulur.  Fonksiyonlar SELECT ile çağırılırken, Stored Procedure 'ler PostgreSQL 11 ile gelen yeni bir ifade olan CALL komutu ile çalıştırılır. Stored Procedure , fonksiyondaki gibi input parametrelerinde IN, OUT ve INOUT kullanılabilir aynı fonksiyonlardaki gibi.  Bir Stored Procedure 'ü aşağıdaki gibi oluşturabilirsiniz. [pg11] # CREATE OR REPLACE PROCEDURE public.test_procedure(a integer, INOUT b integer)  LANGUAGE plpgsql AS $procedure$  BEGIN         SELECT a*b INTO b; END; $procedure$; CREATE PROCEDURE Stored procedur...

PostgreSQL ile Logical Replication Slot

Logical Replication Slot   Logical Decoding Replication Slot yazısına buradan ulaşabilirsiniz. Giriş bilgisi bu yazıda yer almaktadır.  Logical Replication, logical decoding kullanır. Logical decoding, veritabanı tabloları üzerinde commit edilmiş processlerin karşı tarafa row-by-row aktarılmasıdır. Oluşturulan her bir slot sadece bir veritabanı için kullanılabilir. Bir veritabanında birden fazla birbirinden bağımsız slot oluşturulabilir. Logical replication Slot'lar alıcı tarafla ilgili herhangi bilgiye sahip olmadıkları için yukarıda bahsettiğim disk size'ının dolması durumunun yaşanması kontrol edilmeyen bir sistemde kaçınılmaz olacaktır. Unlogged veya temp tables slot ile karşı tarafa aktarılmadığı unutulmamalıdır. Logical Replication kullanılmadan önce wal_level=logical olarak set edilmeli ve max_replication_slots değeri en az 1 olarak set edilmeli. Logical Replication Slot oluşturulması Physical Replication Slot ile benzerdir. Logical Replication Slo...

PostgreSQL ile Physical Replication Slot ve Pg_Basebackup

Physical Replication Slot Physical Replicatio slot, disk bloklarındaki değişikliklerini karşı tarafa gönderir. Aktarılan WAL dosyalarını kontrol eder. Replication Slot yazısına buradan ulaşabilirsiniz. Physical slot oluşturmak için pg_create_physical_replication_slot() fonksiyonu kullanılır. Tam kullanımı şöyledir. Checkpoint sonrası güncel WAL dosyasının hangisi olduğu bilgisi bu fonksiyonu kullanarak oluşturduğumuz slot ile tutulmaz. Açıkcası bunu tercih etmemek için geçerli sebeplerim var ve açıklamasını aşağıda yaptım. select pg_create_physical_replication_slot('slot_name'); Aynı fonksiyona gelen ikinci parametre ile checkpoint sonrası güncel WAL dosyası bilgisi tutulur. Bunun önemi ve asıl farkı aşağıdaki örneklerin altında açıklanmıştır. select pg_create_physical_replication_slot('slot_name',true);     gunce=# select pg_create_physical_replication_slot('slot_first_standby'); pg_create_physical_replication_slot ---------------------------...

PostgreSQL İle Replication Slot

Merhaba, PostgreSQL 9.4 ile Logical Decoding kavramı gelmesiyle Replication Slot yapısının temeli atıldı diyebiliriz. Çünkü Logical Replication, Logical Decoding yapsının üzerinde geliştirilmiştir. Sonrasında ise PostgreSQL 9.6 ile Logical Replication ve Physical Replication kavramlarıyla tanıştık. Öncesinde Replication Slot kavramından, daha sonra Logical ve Physical Replication kavramlarından bahsedeceğim. Tabii öncesinde WAL kavramıyla ilgili küçük bir açıklama yapmak isterim. Çünkü Replicatiın Slot aslında kabaca WAL dosyalarının bir yerden başka bir yere kopyalanması olarak düşünebilirsiniz.  WAL(Write-Ahead-Log) PostgreSQL de transactional loglar 16MB lik dosyalarda saklanmaktadır. Bu dosyalar WAL (Write-Ahead-Log) dosyalarıdır. Data file'lar üzerindeki değişiklikler commit edildikten sonra ancak loglanır. Log record'lar okunduktan sonra değişiklikler kalıcı olarak diske yazılır. Aslında bunların yapılmasının tek bir amacı var o da bir sorun olması durumunda WAL d...