Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı - Esnek Sunucu'daki PostgreSQL uzantıları

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Esnek Sunucu

PostgreSQL için Azure Veritabanı esnek sunucu, uzantıları kullanarak veritabanınızın işlevselliğini genişletme olanağı sağlar. Uzantılar, veritabanınızdan yüklenebilen veya kaldırılabilen birden çok ilişkili SQL nesnesini tek bir pakette bir komutla paketler. Uzantılar veritabanına yüklendikten sonra yerleşik özellikler gibi çalışır.

PostgreSQL uzantılarını kullanma

Uzantıları esnek PostgreSQL için Azure Veritabanı sunucuya yüklemeden önce, bu uzantıları kullanmak üzere izin verilenler listesine eklemeniz gerekir.

Azure portalını kullanma:

  1. PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi seçin.
    1. Kaynak menüsünde, Ayarlar bölümünde Sunucu parametreleri'ni seçin.
    2. parametresini azure.extensions arayın.
    3. İzin vermek istediğiniz uzantıları seçin. PostgreSQL için Azure Veritabanı esnek sunucu - yükleme için izin veren uzantıları listeleyen ekran görüntüsü.

Azure CLI kullanma:

CLI parametre kümesi komutuyla uzantıların izin verilenler listesine girebilirsiniz.

az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>

ARM Şablonunu Kullanma: Aşağıdaki örnek, adı postgres-test-server: olan bir sunucuda , pg_buffercache dict_xsynuzantılarını izin verilenler dblinklistesine ekler:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "postgres-test-server",
            "type": "String"
        },
        "azure_extensions_set_value": {
            "defaultValue": " dblink,dict_xsyn,pg_buffercache",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
            "apiVersion": "2021-06-01",
            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
            "properties": {
                "value": "[parameters('azure_extensions_set_value')]",
                "source": "user-override"
            }
        }
    ]
}

shared_preload_libraries, esnek PostgreSQL için Azure Veritabanı sunucu başlatıldığında hangi kitaplıkların yüklenmesi gerektiğini belirleyen bir sunucu yapılandırma parametresidir. Paylaşılan bellek kullanan tüm kitaplıklar bu parametre aracılığıyla yüklenmelidir. Uzantınızın paylaşılan ön yükleme kitaplıklarına eklenmesi gerekiyorsa şu adımları izleyin:

Azure portalını kullanma:

  1. PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi seçin.
    1. Kaynak menüsünde, Ayarlar bölümünde Sunucu parametreleri'ni seçin.
    2. parametresini shared_preload_libraries arayın.
    3. Eklemek istediğiniz kitaplıkları seçin.
 :::image type="content" source="./media/concepts-extensions/shared-libraries.png" alt-text="Screenshot showing Azure Database for PostgreSQL -setting shared preload libraries parameter setting for extensions installation." lightbox="./media/concepts-extensions/shared-libraries.png":::
```Using [Azure CLI](/cli/azure/):

   You can set `shared_preload_libraries` via CLI [parameter set](/cli/azure/postgres/flexible-server/parameter?view=azure-cli-latest&preserve-view=true) command.

   ```azurecli
az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>

Uzantı Oluştur

Uzantılar izin verilenler listesine eklendikten ve yüklendikten sonra, bunları kullanmayı planladığınız her veritabanına yüklenmelidir.

  1. Bir kullanıcının uzantı oluşturabilmesi için rolün azure_pg_admin üyesi olması gerekir. Rolün azure_pg_admin bir üyesi diğer kullanıcılara uzantı oluşturma ayrıcalıkları verebilir.
  2. Belirli bir uzantıyı yüklemek için CREATE EXTENSION komutunu çalıştırmanız gerekir. Bu komut, paketlenmiş nesneleri veritabanınıza yükler.

Not

Esnek PostgreSQL için Azure Veritabanı sunucuda sunulan üçüncü taraf uzantıları lisanslı açık kaynak kodlardır. Şu anda premium veya özel lisanslama modellerine sahip üçüncü taraf uzantıları veya uzantı sürümleri sunmıyoruz.

PostgreSQL için Azure Veritabanı esnek sunucu örneği, aşağıdaki tabloda listelendiği gibi önemli PostgreSQL uzantılarının bir alt kümesini destekler. Bu bilgiler, çalıştırılarak SHOW azure.extensions;da kullanılabilir. Bu belgede listelenmeyen uzantılar PostgreSQL için Azure Veritabanı esnek sunucuda desteklenmez. Esnek PostgreSQL için Azure Veritabanı sunucuda kendi uzantınızı oluşturamaz veya yükleyemezsiniz.

Uzantı sürümleri

Esnek PostgreSQL için Azure Veritabanı sunucuda aşağıdaki uzantılar kullanılabilir:

Not

Aşağıdaki tabloda ✔️ yer alan ve işaretli uzantılar, sunucu parametresinde ilgili kitaplıklarının etkinleştirilmesini shared_preload_libraries gerektirir.

Uzantı adı Açıklama PostgreSQL 17 PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Bir adresi bileşen öğelerine ayrıştırmak için kullanılır. Genellikle coğrafi kodlama adresi normalleştirme adımlarını desteklemek için kullanılır. 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Adres Standardizer ABD veri kümesi örneği 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
age (Önizleme) Grafik veritabanı özellikleri sağlar Yok 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ Yok Yok
amcheck İlişki bütünlüğünü doğrulama işlevleri 1.4 1.3 1.3 1.3 1.2 1.2 1.1
anon (Önizleme) Veri anonimleştirme araçları 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️
azure_ai PostgreSQL için Azure AI ve ML Services tümleştirmesi Yok 1.1.0 1.1.0 1.1.0 1.1.0 1.1.0 Yok
azure_storage PostgreSQL için Azure tümleştirmesi Yok 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ Yok
çiçeklenmek Bloom erişim yöntemi - imza dosyası tabanlı dizin 1.0 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin GIN'de ortak veri türlerini dizine ekleme desteği 1.3 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist GiST'de ortak veri türlerini dizine ekleme desteği 1.7 1.7 1.7 1.6 1.5 1.5 1.5
citext Büyük/küçük harfe duyarlı olmayan karakter dizeleri için veri türü 1.6 1.6 1.6 1.6 1.6 1.6 1.5
küp Çok boyutlu küpler için veri türü 1.5 1.5 1.5 1.5 1.4 1.4 1.4
dblink Veritabanı içinden diğer PostgreSQL veritabanlarına bağlanma 1.2 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Tamsayılar için metin arama sözlüğü şablonu 1.0 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Genişletilmiş eş anlamlı işleme için metin arama sözlüğü şablonu 1.0 1.0 1.0 1.0 1.0 1.0 1.0
toprakçılık Dünya yüzeyindeki büyük daire mesafelerini hesaplama 1.1 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch Dizeler arasındaki benzerlikleri ve uzaklığı belirleme 1.2 1.2 1.1 1.1 1.1 1.1 1.1
hstore (anahtar, değer) çiftlerinin kümelerini depolamak için veri türü 1.8 1.8 1.8 1.8 1.7 1.6 1.5
hipopg PostgreSQL için varsayımsal dizinler 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Tamsayı toplayıcısı ve numaralandırıcı (eski) 1.1 1.1 1.1 1.1 1.1 1.1 1.1
intarray 1-B tamsayı dizileri için işlevler, işleçler ve dizin desteği 1.5 1.5 1.5 1.5 1.3 1.2 1.2
ısn Uluslararası ürün numaralandırma standartları için veri türleri 1.2 1.2 1.2 1.2 1.2 1.2 1.2
işte Büyük Nesne bakımı 1.1 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook - oturum açma zamanında login_hook.login() yürütme kancası 1.5 1.5 1.4 1.4 1.4 1.4 1.4
ltree Hiyerarşik ağaç benzeri yapılar için veri türü 1.3 1.2 1.2 1.2 1.2 1.1 1.1
oracle_fdw Oracle veritabanları için yabancı veri sarmalayıcı 1.2 1.2 1.2 1.2 1.2 1.2 Yok
orafce Oracle RDBMS'den işlevlerin ve paketlerin bir alt kümesini öykünen işlevler ve işleçler 4,9 4.4 3.24 3.18 3.18 3.18 3.7
pageinspect Veritabanı sayfalarının içeriğini düşük düzeyde inceleme 1.12 1.12 1.11 1.9 1.8 1.7 1.7
pgaudit Denetim işlevselliği sağlar 16.0 ✔️ 16.0 ✔️ 1,7 ✔️ 1.6.2 ✔️ 1,5 ✔️ 1.4.3 ✔️ 1.3.2 ✔️
pg_buffercache Paylaşılan arabellek önbelleğini inceleme 1.5 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron PostgreSQL için iş zamanlayıcı 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.4-1 ✔️
pgcrypto Şifreleme işlevleri 1.3 1.3 1.3 1.3 1.3 1.3 1.3
pg_freespacemap Boş alan haritasını (FSM) inceleme 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan SQL açıklamalarında sözde ipuçları kullanarak PostgreSQL yürütme planlarında ince ayar yapmayı mümkün kılar. 1.7.0 ✔️ 1.6.0 ✔️ 1,5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical PostgreSQL Mantıksal Çoğaltma 2.4.5 ✔️ 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Bölümlenmiş tabloları zamana veya kimliklere göre yönetmek için uzantı 5.0.1 ✔️ 5.0.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Önceden uyarı ilişkisi verileri 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack PostgreSQL veritabanlarındaki tabloları minimum kilitlerle yeniden düzenleme 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting PgRouting Uzantısı Yok Yok 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Satır düzeyi kilitleme bilgilerini göster 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze İlişkiden kullanılmayan alanı kaldırma aracı. 1,7 ✔️ 1.6 ✔️ 1.6 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️
pg_stat_statements Yürütülen tüm SQL deyimlerinin yürütme istatistiklerini izleme 1.11 ✔️ 1.10 ✔️ 1.10 ✔️ 1,9 ✔️ 1,8 ✔️ 1,7 ✔️ 1.6 ✔️
pgstattuple Tanımlama grubu düzeyinde istatistikleri göster 1.5 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Metin benzerliği ölçümü ve trigramlara göre dizin araması 1.6 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility Görünürlük haritasını (VM) ve sayfa düzeyinde görünürlük bilgilerini inceleme 1.2 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql PL/pgSQL yordam dili 1.0 1.0 1.0 1.0 1.0 1.0 1.0
plv8 PL/JavaScript (v8) güvenilen yordam dili 3.1.7 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis PostGIS geometrisi ve coğrafya uzamsal türleri ve işlevleri 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster PostGIS raster türleri ve işlevleri 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal PostGIS SFCGAL işlevleri 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder PostGIS tiger geocoder ve ters coğrafi kodlayıcı 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology PostGIS topolojisi uzamsal türleri ve işlevleri 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Uzak PostgreSQL sunucuları için yabancı veri sarmalayıcı 1.1 1.1 1.1 1.1 1.0 1.0 1.0
postgres_protobuf PostgreSQL için protokol arabellekleri 0,2 0,2 0,2 0,2 0,2 0,2 Yok
semver Anlamsal sürüm veri türü 0.32.1 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable - oturum değişkenlerinin ve sabitlerinin kaydı ve işlemesi 3.3 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo SSL sertifikaları hakkında bilgi 1.2 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Çapraz da dahil olmak üzere tüm tabloları işleyen işlevler 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw TDS veritabanını sorgulamak için yabancı veri sarmalayıcı (Sybase veya Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Zaman serisi verileri için ölçeklenebilir eklemeleri ve karmaşık sorguları etkinleştirir Yok 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows Satır sayısını sınır olarak kabul eden TABLESAMPLE yöntemi 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time Milisaniye cinsinden süreyi sınır olarak kabul eden TABLESAMPLE yöntemi 1.0 1.0 1.0 1.0 1.0 1.0 1.0
doğru olmayan Aksanları kaldıran metin arama sözlüğü 1.1 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp Evrensel olarak benzersiz tanımlayıcılar (UUID' ler) oluşturma 1.1 1.1 1.1 1.1 1.1 1.1 1.1
vektör Vektör veri türü ve ivfflat ve hnsw erişim yöntemleri 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.5.1

PostgreSQL uzantılarını yükseltme

Veritabanı uzantılarının yerinde yükseltmelerine basit bir komutla izin verilir. Bu özellik, müşterilerin üçüncü taraf uzantılarını en son sürümlere otomatik olarak güncelleştirmelerini ve mevcut ve güvenli sistemleri el ile çalışmadan korumalarını sağlar.

Uzantıları Güncelleştirme

Yüklü bir uzantıyı Azure tarafından desteklenen en son kullanılabilir sürüme güncelleştirmek için aşağıdaki SQL komutunu kullanın:

ALTER EXTENSION <extension_name> UPDATE;

Bu komut, kullanıcıların Azure tarafından onaylanan en son sürüme el ile yükseltmesine olanak tanıyarak veritabanı uzantılarının yönetimini basitleştirerek hem uyumluluğu hem de güvenliği geliştirir.

Sınırlamalar

Uzantıları güncelleştirmek basittir ancak bazı sınırlamalar vardır:

  • Belirli bir sürümün seçimi: Komut, bir uzantının ara sürümlerine güncelleştirmeyi desteklemez. Her zaman en son kullanılabilir sürüme güncelleştirilir.
  • Eski sürüme düşürme: Bir uzantıyı önceki bir sürüme düşürmeyi desteklemez. Bir sürüm düşürme gerekiyorsa, destek yardımı gerektirebilir ve önceki sürümün kullanılabilirliğine bağlıdır.

Yüklü uzantılar

Veritabanınızda yüklü olan uzantıları listelemek için aşağıdaki SQL komutunu kullanın:

SELECT * FROM pg_extension;

Kullanılabilir uzantılar ve sürümleri

Geçerli veritabanı yüklemenizde bir uzantının hangi sürümlerinin kullanılabilir olduğunu denetlemek için sistem kataloğu görünümünü sorgula pg_available_extensions . Örneğin, uzantı için kullanılabilir sürümü belirlemek için azure_aişunu yürütür:

SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';

Bu komutlar veritabanınızın uzantı yapılandırmaları hakkında gerekli içgörüleri sağlayarak sistemlerinizin verimli ve güvenli bir şekilde korunmasına yardımcı olur. PostgreSQL için Azure Veritabanı, en son uzantı sürümlerinde kolay güncelleştirmeleri etkinleştirerek veritabanı uygulamalarınızın sağlam, güvenli ve verimli yönetimini desteklemeye devam eder.

PostgreSQL için Azure Veritabanı esnek sunucuya özgü önemli noktalar

Aşağıda, PostgreSQL için Azure Veritabanı esnek sunucu hizmetinde kullanıldığında dikkat edilmesi gereken bazı önemli noktalar gerektiren desteklenen uzantıların listesi yer alır. Liste alfabetik olarak sıralanır.

dblink, bir PostgreSQL için Azure Veritabanı esnek sunucu örneğinden diğerine veya aynı sunucudaki başka bir veritabanına bağlanmanızı sağlar. PostgreSQL için Azure Veritabanı esnek sunucu, herhangi bir PostgreSQL sunucusuna hem gelen hem de giden bağlantıları destekler. Gönderen sunucunun alıcı sunucuya giden bağlantılara izin verebilmesi gerekir. Benzer şekilde, alıcı sunucunun gönderen sunucudan bağlantılara izin vermesi gerekir.

Bu uzantıyı kullanmayı planlıyorsanız sunucularınızı sanal ağ tümleştirmesi ile dağıtmanızı öneririz. Varsayılan olarak sanal ağ tümleştirmesi, sanal ağdaki sunucular arasında bağlantılara izin verir. Erişimi özelleştirmek için sanal ağ güvenlik gruplarını kullanmayı da seçebilirsiniz.

pg_buffercache

pg_buffercacheshared_buffers içeriğini incelemek için kullanılabilir. Bu uzantıyı kullanarak belirli bir ilişkinin önbelleğe alındığını veya önbelleğe alınmadığını anlayabilirsiniz (içindeshared_buffers). Bu uzantı, performans sorunlarını (önbelleğe almayla ilgili performans sorunlarını) gidermenize yardımcı olabilir.

Bu uzantı PostgreSQL'in çekirdek yüklemesi ile tümleşiktir ve kolayca yüklenebilir.

CREATE EXTENSION pg_buffercache;

pg_cron

pg_cron, veritabanının içinde uzantı olarak çalışan postgreSQL için basit, cron tabanlı bir iş zamanlayıcıdır. Uzantı, pg_cron PostgreSQL veritabanında zamanlanmış bakım görevlerini çalıştırmak için kullanılabilir. Örneğin, bir tablonun düzenli aralıklı vakumlarını çalıştırabilir veya eski veri işlerini kaldırabilirsiniz.

pg_cron birden çok işi paralel olarak çalıştırabilir, ancak aynı anda işin en fazla bir örneğini çalıştırır. İkinci çalıştırmanın ilk çalıştırma tamamlanmadan başlaması gerekiyorsa, ikinci çalıştırma kuyruğa alınır ve ilk çalıştırma tamamlanır tamamlanmaz başlatılır. Bu şekilde, işlerin tam olarak zamanlandığı kadar çok kez çalıştığından ve kendileriyle aynı anda çalışmadığından emin olunması sağlanır.

Bazı örnekler:

Eski verileri Cumartesi günü saat 03:30'da (GMT) silmek için.

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

Her gün saat 10:00'da (GMT) varsayılan veritabanında postgresvakum çalıştırmak için.

SELECT cron.schedule('0 10 * * *', 'VACUUM');

'den pg_crontüm görevleri zamanlanmamış olarak ayarlamak için.

SELECT cron.unschedule(jobid) FROM cron.job;

ile pg_cronzamanlanmış olan tüm işleri görmek için.

SELECT * FROM cron.job;

Vakumu her gün saat 10:00'da (GMT) azure_pg_admin rol hesabı altında 'testcron' veritabanında çalıştırmak için.

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);

Not

pg_cron uzantısı, güvenlikten ödün vermeden PostgreSQL için Azure Veritabanı esnek sunucu veritabanı örneğinizdeki diğer veritabanlarında çalışacak işler zamanlama olanağı sağlamak amacıyla postgres veritabanı içindeki her PostgreSQL için Azure Veritabanı esnek sunucu örneği için önceden yüklenirshared_preload_libraries. Ancak, güvenlik nedeniyle liste uzantısına izin vermeli pg_cron ve CREATE EXTENSION komutunu kullanarak yüklemelisiniz.

pg_cron Sürüm 1.4'den başlayarak ve cron.alter_job işlevlerini kullanarak cron.schedule_in_database işinizi belirli bir veritabanında zamanlayabilir ve mevcut bir zamanlamayı güncelleştirebilirsiniz.

Bazı örnekler:

DbName veritabanındaki eski verileri Cumartesi günü saat 03:30'da (GMT) silmek için.

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

Not

cron_schedule_in_database işlevi, isteğe bağlı parametre olarak kullanıcı adı sağlar. Kullanıcı adını null olmayan bir değere ayarlamak için PostgreSQL süper kullanıcı ayrıcalığı gerekir ve esnek PostgreSQL için Azure Veritabanı sunucuda desteklenmez. Yukarıdaki örneklerde, işi azure_pg_admin rol ayrıcalıklarına sahip olması gereken, işi zamanlayan kullanıcı bağlamında çalıştırılan isteğe bağlı kullanıcı adı parametresi atlanmış veya null olarak ayarlanmış bu işlevin çalıştırılması gösterilmektedir.

Mevcut zamanlamada veritabanı adını güncelleştirmek veya değiştirmek için

SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots

PG Yük Devretme Yuvaları uzantısı, hem mantıksal çoğaltma hem de yüksek kullanılabilirlik özellikli sunucularla çalışırken PostgreSQL için Azure Veritabanı esnek sunucuyu geliştirir. Yük devretme sonrasında mantıksal çoğaltma yuvalarını korumayan standart PostgreSQL altyapısındaki sınamayı etkili bir şekilde ele alır. Bu yuvaların korunması, birincil sunucu rolü değişiklikleri sırasında çoğaltma duraklamalarını veya veri uyuşmazlıklarını önlemek ve işletimsel sürekliliği ve veri bütünlüğünü sağlamak için kritik öneme sahiptir.

Uzantı, çoğaltma yuvalarının gerekli aktarımını, temizlemesini ve eşitlemesini yöneterek yük devretme işlemini kolaylaştırır ve böylece sunucu rolü değişiklikleri sırasında sorunsuz bir geçiş sağlar. Uzantı, PostgreSQL sürüm 11 ile 16 için desteklenir.

GitHub sayfasında PG Yük Devretme Yuvaları uzantısını nasıl kullanacağınız hakkında daha fazla bilgi bulabilirsiniz.

pg_failover_slots etkinleştirme

PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde PG Yük Devretme Yuvaları uzantısını etkinleştirmek için, uzantıyı sunucunun paylaşılan ön yükleme kitaplıklarına ekleyerek ve belirli bir sunucu parametresini ayarlayarak sunucunun yapılandırmasını değiştirmeniz gerekir. Süreç şu şekildedir:

  1. parametresini güncelleştirerek sunucunun paylaşılan ön yükleme kitaplıklarına shared_preload_libraries ekleyinpg_failover_slots.
  2. Sunucu parametresini hot_standby_feedback olarak ondeğiştirin.

parametresinde shared_preload_libraries yapılan tüm değişikliklerin etkili olması için sunucunun yeniden başlatılması gerekir.

Azure portalını kullanma:

  1. PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi seçin.
  2. Kaynak menüsünde, Ayarlar bölümünde Sunucu parametreleri'ni seçin.
  3. parametresini shared_preload_libraries arayın ve değerini içerecek pg_failover_slotsşekilde düzenleyin.
  4. parametresini hot_standby_feedback arayın ve değerini olarak onayarlayın.
  5. Değişikliklerinizi korumak için Kaydet'i seçin. Şimdi Kaydet ve yeniden başlat seçeneğiniz vardır. Değişiklik shared_preload_libraries sunucunun yeniden başlatılmasını gerektirdiğinden değişikliklerin etkili olduğundan emin olmak için bunu seçin.

Kaydet ve yeniden başlat'ı seçerek sunucunuz otomatik olarak yeniden başlatılır ve yeni yapılan değişiklikler uygulanır. Sunucu yeniden çevrimiçi olduktan sonra PG Yük Devretme Yuvaları uzantısı birincil PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde etkinleştirilir ve çalışır duruma gelir ve yük devretme sırasında mantıksal çoğaltma yuvalarını işlemeye hazırdır.

pg_hint_plan

pg_hint_plan aşağıdakiler gibi SQL açıklamalarında "ipuçları" olarak adlandırılan postgreSQL yürütme planlarını ayarlamayı mümkün kılar:

/*+ SeqScan(a) */

pg_hint_plan hedef SQL deyimiyle verilen özel formun açıklamasındaki ipucu tümceciklerini okur. Özel form "/*+" karakter dizisiyle başlar ve "*/" ile biter. İpucu tümcecikleri, ipucu adından ve parantez içine alınmış ve boşluklarla sınırlandırılmış aşağıdaki parametrelerden oluşur. Okunabilirlik için yeni satırlar, her ipucu tümceciği sınırlandırabilir.

Örnek:

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

Önceki örnek, planlayıcının a tablosundaki bir seq scan sonucunu kullanarak b tablosuyla birleştirilmesine hash joinneden olur.

PostgreSQL uzantılarını kullanma konusunda gösterildiği gibi, pg_hint_plan yüklemek ve listelemeye izin vermek için, bunu sunucunun paylaşılan ön yükleme kitaplıklarına eklemeniz gerekir. Postgres'in shared_preload_libraries parametresinde yapılan bir değişiklik, sunucunun yeniden başlatılmasının etkili olmasını gerektirir. Azure portalını veya Azure CLI'yi kullanarak parametreleri değiştirebilirsiniz.

Azure portalını kullanma:

  1. PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi seçin.
  2. Kaynak menüsünde, Ayarlar bölümünde Sunucu parametreleri'ni seçin.
  3. parametresini shared_preload_libraries arayın ve değerini içerecek pg_hint_planşekilde düzenleyin.
  4. Değişikliklerinizi korumak için Kaydet'i seçin. Şimdi Kaydet ve yeniden başlat seçeneğiniz vardır. Değişiklik shared_preload_libraries sunucunun yeniden başlatılmasını gerektirdiğinden değişikliklerin etkili olduğundan emin olmak için bunu seçin. Artık PostgreSQL için Azure Veritabanı esnek sunucu veritabanınızı pg_hint_plan etkinleştirebilirsiniz. Veritabanına bağlanın ve aşağıdaki komutu çalıştırın:
CREATE EXTENSION pg_hint_plan;

pg_prewarm

Uzantı ilişkisel pg_prewarm verileri önbelleğe yükler. Önbelleklerinizi önceden hazırlamanız, sorgularınızın yeniden başlatma sonrasında ilk çalıştırmalarında daha iyi yanıt sürelerine sahip olduğu anlamına gelir. Otomatik uyarı öncesi işlevi şu anda PostgreSQL için Azure Veritabanı esnek sunucuda kullanılamaz.

pg_repack

kullanıcıların bu uzantıyı ilk kullanmaya çalıştıkları zaman sordıkları tipik bir soru: pg_repack bir uzantı mı yoksa psql veya pg_dump gibi istemci tarafı yürütülebilir dosyası mı?

Bunun cevabı aslında ikisinin de olmasıdır. pg_repack/lib , oluşturduğu şema ve SQL yapıtları ve bu işlevlerden birkaçının kodunu uygulayan C kitaplığı dahil olmak üzere uzantının kodunu tutar. Öte yandan pg_repack/bin, uzantı tarafından oluşturulan programlanabilirlik yapıtlarıyla nasıl etkileşim kurulduğunu bilen istemci uygulamasının kodunu tutar. Bu istemci uygulaması, kullanıcıya anlaşılması daha kolay olan bazı komut satırı seçenekleri sunarak sunucu tarafı uzantısı tarafından ortaya çıkan farklı arabirimlerle etkileşim kurmanın karmaşıklığını kolaylaştırmayı amaçlar. İşaret edilen veritabanında oluşturulan uzantı olmadan istemci uygulaması işe yaramaz. Sunucu tarafı uzantısı tamamen işlevsel olacaktır, ancak kullanıcının uzantı tarafından uygulanan işlevlere giriş olarak kullanılan verileri almak için sorgu yürütmeyi içeren karmaşık bir etkileşim desenini anlamasını gerektirir.

Şema yeniden paketleme için izin reddedildi

Şu andan itibaren, bu uzantı tarafından oluşturulan yeniden paketleme şemasına izin verme şeklimiz nedeniyle, yalnızca bağlamından azure_pg_adminpg_repack işlevselliğinin çalıştırılması desteklenir.

olmayan bir tablonun sahibi pg_repack azure_pg_adminçalıştırmayı denerse aşağıdaki gibi bir hata aldıklarını fark edebilirsiniz:

NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR:  permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()

Bu hatayı önlemek için bağlamından azure_pg_adminpg_repack çalıştırdığınızdan emin olun.

pg_stat_statements

pg_stat_statements uzantısı, veritabanınızda çalıştırdığınız tüm sorguların bir görünümünü sağlar. Bu, sorgu iş yükü performansınızın üretim sisteminde nasıl göründüğünü anlamak için yararlıdır.

pg_stat_statements uzantısı, SQL deyimlerinin yürütme istatistiklerini izlemenizi sağlayan her PostgreSQL için Azure Veritabanı esnek sunucu örneğine önceden yüklenirshared_preload_libraries. Ancak, güvenlik nedeniyle uzantıyı pg_stat_statements izin verilenler listesineeklemeli ve CREATE EXTENSION komutunu kullanarak yüklemelisiniz. uzantı tarafından hangi deyimlerin sayıldığını denetleyen ayarı pg_stat_statements.trackvarsayılan olarak ayarlanır; yani doğrudan istemciler toptarafından verilen tüm deyimler izlenir. Diğer iki izleme düzeyi ve allşeklindedirnone. Bu ayar sunucu parametresi olarak yapılandırılabilir.

pg_stat_statements tarafından sağlanan sorgu yürütme bilgilerinin bir dezavantajı vardır; bu her SQL sorgusunu günlüğe kaydettiğinden sunucu performansını etkiler. Uzantıyı pg_stat_statements etkin bir şekilde kullanmıyorsanız olarak ayarlamanız pg_stat_statements.track noneönerilir. Bazı üçüncü taraf izleme hizmetleri sorgu performansı içgörüleri sunmak için kullanabilir pg_stat_statements , bu nedenle bunun sizin için geçerli olup olmadığını onaylayın.

postgres_fdw

postgres_fdw, bir PostgreSQL için Azure Veritabanı esnek sunucu örneğinden diğerine veya aynı sunucudaki başka bir veritabanına bağlanmanızı sağlar. PostgreSQL için Azure Veritabanı esnek sunucu, herhangi bir PostgreSQL sunucusuna hem gelen hem de giden bağlantıları destekler. Gönderen sunucunun alıcı sunucuya giden bağlantılara izin verebilmesi gerekir. Benzer şekilde, alıcı sunucunun gönderen sunucudan bağlantılara izin vermesi gerekir.

Bu uzantıyı kullanmayı planlıyorsanız sunucularınızı sanal ağ tümleştirmesi ile dağıtmanızı öneririz. Varsayılan olarak sanal ağ tümleştirmesi, sanal ağdaki sunucular arasında bağlantılara izin verir. Erişimi özelleştirmek için sanal ağ güvenlik gruplarını kullanmayı da seçebilirsiniz.

pgstattuple

Postgres 11 ile 13 arasındaki sürümlerde şemada pg_toast tutulan nesnelerden tanımlama grubu istatistikleri elde etmeye çalışmak için 'pgstattuple' uzantısını kullanırken "şema pg_toast için izin reddedildi" hatası alırsınız.

Şema pg_toast için izin reddedildi

Esnek Sunucu için Azure Veritabanı'nda PostgreSQL sürüm 11 ile 13 arasında olan müşteriler, uzantıyı pgstattuple şema içindeki pg_toast nesnelerde kullanamaz.

PostgreSQL 16 ve 17'depg_read_all_data, rolüne otomatik olarak verilir ve pgstattuple düzgün çalışmasına izin verilirazure_pg_admin. PostgreSQL 14 ve 15'te müşteriler aynı sonucu elde etmek için azure_pg_admin rolü el ile verebilirpg_read_all_data. Ancak PostgreSQL 11 ile 13 pg_read_all_data arasında rol yoktur.

Müşteriler gerekli izinleri doğrudan veremez. Şema altındaki pg_toast nesnelere erişmek için çalıştırabilmeniz pgstattuple gerekiyorsa lütfen bir Azure desteği isteği oluşturmaya devam edin.

TimescaleDB

TimescaleDB, PostgreSQL uzantısı olarak paketlenmiş bir zaman serisi veritabanıdır. TimescaleDB, zaman serisi iş yükleri için zaman odaklı analitik işlevler, iyileştirmeler ve ölçeklendirmeler sağlar. TimescaleDB Apache-2 sürümünü sağlayan esnek sunucu PostgreSQL için Azure Veritabanı Timescale, Inc.'in kayıtlı ticari markası TimescaleDB hakkında daha fazla bilgi edinin.

TimescaleDB'yi yükleme

TimescaleDB'yi yüklemek için, yukarıda gösterildiği gibi listelenmesine izin vermek için, bunu sunucunun paylaşılan ön yükleme kitaplıklarına eklemeniz gerekir. Postgres'in shared_preload_libraries parametresinde yapılan bir değişiklik, sunucunun yeniden başlatılmasının etkili olmasını gerektirir. Azure portalını veya Azure CLI'yi kullanarak parametreleri değiştirebilirsiniz.

Azure portalını kullanma:

  1. PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi seçin.
  2. Kaynak menüsünde, Ayarlar bölümünde Sunucu parametreleri'ni seçin.
  3. parametresini shared_preload_libraries arayın ve değerini içerecek TimescaleDBşekilde düzenleyin.
  4. Değişikliklerinizi korumak için Kaydet'i seçin. Şimdi Kaydet ve yeniden başlat seçeneğiniz vardır. Değişiklik shared_preload_libraries sunucunun yeniden başlatılmasını gerektirdiğinden değişikliklerin etkili olduğundan emin olmak için bunu seçin. Artık PostgreSQL için Azure Veritabanı esnek sunucu veritabanınızda TimescaleDB'yi etkinleştirebilirsiniz. Veritabanına bağlanın ve aşağıdaki komutu çalıştırın:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

İpucu

Bir hata görürseniz, shared_preload_libraries kaydettikten sonra sunucunuzu yeniden başlattığınızdan emin olun.

Artık sıfırdan bir TimescaleDB hiper tablosu oluşturabilir veya PostgreSQL'de mevcut zaman serisi verilerini geçirebilirsiniz.

pg_dump ve pg_restore kullanarak Zaman Ölçeği veritabanını geri yükleme

pg_dump ve pg_restore kullanarak zaman ölçeği veritabanını geri yüklemek için hedef veritabanında iki yardımcı yordam çalıştırmanız gerekir: timescaledb_pre_restore() ve timescaledb_post restore().

İlk olarak hedef veritabanını hazırlayın:

--create the new database where you want to perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Artık özgün veritabanında pg_dump çalıştırabilir ve ardından pg_restore yapabilirsiniz. Geri yükleme işleminden sonra, geri yüklenen veritabanında aşağıdaki komutu çalıştırdığınızdan emin olun:

SELECT timescaledb_post_restore();

Zaman Ölçeği etkinleştirilmiş veritabanı ile geri yükleme yöntemi hakkında daha fazla bilgi için Zaman Ölçeği belgelerine bakın.

Timescaledb-backup kullanarak Zaman Ölçeği veritabanını geri yükleme

Yukarıda listelenen yordamı çalıştırırken SELECT timescaledb_post_restore() timescaledb.restoreing bayrağını güncelleştirirken izinler reddedildi hatası alabilirsiniz. Bunun nedeni, Cloud PaaS veritabanı hizmetlerindeki ALTER DATABASE izninin sınırlı olmasıdır. Bu durumda, Zaman Ölçeği veritabanını yedeklemek ve geri yüklemek için aracı kullanarak timescaledb-backup alternatif yöntem gerçekleştirebilirsiniz. Timescaledb-backup, Bir TimescaleDB veritabanının dökümünü alma ve geri yükleme işlemlerini daha basit, daha az hataya açık ve daha performanslı hale getirmek için bir programdır.
Bunu yapmak için aşağıdakileri yapmalısınız

  1. Burada ayrıntılı olarak açıklandığı gibi araçları yükleme
    1. Esnek sunucu örneği ve veritabanı PostgreSQL için Azure Veritabanı hedef oluşturma
    2. Yukarıda gösterildiği gibi Zaman Ölçeği uzantısını etkinleştirme
    3. Kullanıcıya ts-restore tarafından kullanılacak rolü verme azure_pg_admin
    4. Veritabanını geri yüklemek için ts-restore komutunu çalıştırın

Bu yardımcı programlar hakkında daha fazla ayrıntıya buradan ulaşabilirsiniz.

Uzantılar ve Ana Sürüm Yükseltmesi

PostgreSQL için Azure Veritabanı esnek sunucu, tek bir tıklamayla PostgreSQL için Azure Veritabanı esnek sunucu örneğinin yerinde yükseltmesini gerçekleştiren bir yerinde ana sürüm yükseltme özelliği kullanıma sunulmuştur. Yerinde ana sürüm yükseltmesi, PostgreSQL için Azure Veritabanı esnek sunucu yükseltme işlemini basitleştirerek sunucuya erişen kullanıcıların ve uygulamaların kesintiye uğramasını en aza indirir. Yerinde ana sürüm yükseltmesi belirli uzantıları desteklemez ve belirli uzantıları yükseltmeye yönelik bazı sınırlamalar vardır. Yerleşik ana sürüm güncelleştirme özelliği kullanılırken tüm PostgreSQL için Azure Veritabanı esnek sunucu sürümleri için anon, Apache AGE, dblink, orafce, pgaudit, postgres_fdw ve Timescaledb uzantıları desteklenmez.