Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, PostgreSQL için Azure Veritabanı esnek sunucu örneğinde belirli uzantıları veya modülleri kullanırken dikkat etmeniz gereken bazı özel noktalar açıklanmaktadır.
Uzantılarla ilgili genel dikkat edilmesi gerekenler
PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde bir uzantı kullanmak için şunları yapın:
-
Uzantıya izin ver. Uzantıya izin verilmiyorsa, , ,
CREATE EXTENSIONALTER EXTENSIONveyaDROP EXTENSIONyürütmeCOMMENT ON EXTENSIONgirişimleri, başvuruda bulunılan uzantıya izin verilmediğini belirten bir hatayla başarısız olur. - Uzantı, paylaşılan belleği ayırmayı ve bunlara erişmeyi gerektiren bazı paylaşılan ikili kitaplıklar dağıtıyorsa ve sunucu başlatıldığında yüklenmesi gerekiyorsa, yük kitaplıklarında sağlanan yönergeleri de izlemeniz gerekir.
- Uzantıyla dağıtılan SQL nesnelerini dağıtmak istediğiniz veritabanlarında uzantı oluşturun.
- Uzantıyı kaldırın. komutunu çalıştırdığınız veritabanından kaldırmak istediğinizde, bu uzantı tarafından dağıtılan tüm SQL nesneleri.
- Uzantıları güncelleştirerek, zaten yüklü olan bir uzantı tarafından dağıtılan tüm SQL yapıtlarını en yeni sürümüne güncelleştirin.
- Yüklü uzantıları ve bunların karşılık gelen sürümlerini görüntüleyin.
PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde , CREATE EXTENSIONALTER EXTENSION veya DROP EXTENSION komutlarını yürütürken COMMENT ON EXTENSIONherhangi bir hata alırsanız olası hataların listesine bakın ve bu hataların her birinin nedeni ne olabilir?
Modüllerle ilgili genel konular
PostgreSQL için Azure Veritabanı esnek sunucu örneğinizde bir modülü kullanmak için, bunu yalnızca shared_preload_libraries açıklandığı gibi sunucu parametresine eklemeniz gerekir.
Modüllerin izin verilenler listesine alınması gerekmez. Bu, uzantılar için özel bir gereksinimdir.
Dikkat edilmesi gereken belirli noktalara sahip uzantılar
Aşağıdaki liste, PostgreSQL için Azure Veritabanı esnek sunucu örneğinde kullanıldığında dikkat edilmesi gereken tüm desteklenen uzantıları numaralandırır:
AGEdblinkpg_buffercachepg_cronpg_hint_planpg_prewarmpg_repackpg_stat_statementspostgres_fdwpgstattuple
AGE
Apache AGE uzantısı, PostgreSQL için Azure Veritabanı tarafından desteklenen postgreSQL için bir grafik uzantısıdır. Graf veritabanı işlevleri, açık şifreleme sorgusu desteği ve PostgreSQL'de depolanan grafik verileri üzerinde karmaşık sorgular yürütme olanağı sağlar. 'Apache AGE', Apache Lisansı 2.0 altında yayımlanan açık kaynaklı bir projedir.
AGE'yi yükleme
AGE kullanmak için, işlevselliğini kullanmayı planladığınız veritabanında uzantının 'allowlist' edildiğinden, kütüphanesinin yüklendiğinden ve uzantının kurulduğundan emin olun.
dblink
Uzantı, dblink bir PostgreSQL için Azure Veritabanı esnek sunucu örneğinden aynı sunucudaki başka bir veritabanına veya başka bir veritabanına bağlanmanızı sağlar. PostgreSQL için Azure Veritabanı, 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
Uzantı, pg_buffercacheshared_buffers içeriğini incelemek için kullanılabilir.
Bu uzantıyı kullanarak, belirli bir ilişkinin önbelleğe alınıp alınmadığını anlayabilirsiniz (içindeshared_buffers). Bu uzantı, performans sorunlarını (önbelleğe almayla ilgili performans sorunları) gidermenize yardımcı olabilir.
Bu uzantı PostgreSQL'in temel yüklemesiyle tümleştirilmiştir ve kolayca yüklenebilir.
CREATE EXTENSION pg_buffercache;
pg_cron
Uzantı pg_cron , veritabanı 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ırabilir. Örneğin, bir tablonun düzenli aralıklı vakumlarını çalıştırabilir veya eski veri işlerini kaldırabilirsiniz.
Uzantı 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 zamanlandığı kadar çok kez çalışmasını ve kendileriyle eşzamanlı olarak çalışmamasını sağlar.
ayarlandığı shared_preload_libraries değerin değerini içerdiğinden pg_cronemin olun. Bu uzantı, CREATE EXTENSION komutunun yürütülmesi sonucunda kitaplığın yüklenmesini desteklemez. Uzantı öğesine eklenmediyse veya sunucu eklendikten shared_preload_librariessonra yeniden başlatılmadıysa CREATE EXTENSION'ı çalıştırma girişimi, metninde ifadesinin olduğu pg_cron can only be loaded via shared_preload_librariesve ipucunun olduğu bir hatayla sonuçlanır Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf.
kullanmak pg_croniçin, paylaşılan kitaplığını sunucu başlatıldığında yüklediğinizden, izin verilenler listesinde olduğundan ve oluşturduğu SQL yapıtlarını kullanarak işlevselliğiyle etkileşim kurmak istediğiniz herhangi bir veritabanına yüklendiğinden emin olun.
Examples
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'$$);Vakumu her gün saat 10:00'da (GMT) varsayılan veritabanında
postgresç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) veritabanında
test cronrol hesabı altındaazure_pg_adminçalıştırmak için.SELECT cron.schedule_in_database('VACUUM',' 0 10 * * * ', 'VACUUM', 'testcron',null,TRUE);
Diğer örnekler
pg_cron Sürüm 1.4'den başlayarak, ve işlevlerini kullanarak cron.schedule_in_databasecron.alter_job işinizi belirli bir veritabanında zamanlayabilir ve mevcut bir zamanlamayı güncelleştirebilirsiniz.
işlevi, cron_schedule_in_database isteğe bağlı bir parametre olarak kullanıcı adına izin verir. Kullanıcı adını null olmayan bir değere ayarlamak için PostgreSQL süper kullanıcı ayrıcalığı gerekir ve PostgreSQL için Azure Veritabanı esnek sunucu örneği için desteklenmez. Yukarıdaki örneklerde bu işlevin, işi zamanlayan kullanıcı bağlamında çalışan ve rol ayrıcalıklarına sahip azure_pg_admin olması gereken isteğe bağlı bir kullanıcı adı parametresi atlanmış veya null olarak ayarlanmış şekilde çalıştırılması gösterilmektedir.
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');Mevcut zamanlamada veritabanı adını güncelleştirmek veya değiştirmek için
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
Uzantı, pg_hint_plan SQL açıklamalarında "ipuçları" olarak adlandırılan şu şekilde postgreSQL yürütme planlarını ayarlamayı mümkün kılar:
/*+ SeqScan(a) */
Uzantı, pg_hint_plan hedef SQL deyimiyle verilen özel formun açıklamasında ipucu tümceciklerini okur. Belirli bir form "/*+" karakter dizisiyle başlar ve "*/" ile biter. İpucu tümcecikleri, ipucu adları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.
Example:
/*+
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 tabloyla seqscan tablo a olarak bbirleştirmek için tablodaki sonuçları hashjoin kullanmasına neden olur.
pg_hint_plan uzantısını kullanmak için, uzantıyı izin listesine eklediğinizden, kütüphanesini yüklediğinizden ve işlevselliğini kullanmayı planladığınız veritabanına yüklediğinizden emin olun.
pg_prewarm
Uzantı, pg_prewarm ilişkisel 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. PostgreSQL için otomatik uyarı işlevselliği şu anda Azure Veritabanı'nda kullanılamaz.
pg_repack
Uzantının pg_repack ilk kullanıcıları genellikle şu soruyu sorar: Bir uzantı mı yoksa veya gibi pg_repack bir istemci tarafı yürütülebilir dosyası mı psqlpg_dump?
pg_repack aslında ikisi de. 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 koduna sahiptir.
Öte yandan , pg_repack/bin , uzantıda uygulanan programlama öğeleriyle nasıl etkileşim kuracaklarını bilen istemci uygulamasının kodunu içerir. Bu istemci uygulaması, sunucu tarafı uzantısının ortaya çıkardığı farklı arabirimlerle etkileşim kurmanın karmaşıklığını kolaylaştırmayı amaçlar. Kullanıcıya anlaşılması daha kolay olan bazı komut satırı seçenekleri sunar. İstemci uygulaması, işaret edildiği veritabanında oluşturulan uzantı olmadan işe yaramaz. Kendi başına sunucu tarafı uzantısı tamamen işlevsel olacaktır, ancak kullanıcının karmaşık bir etkileşim desenini anlamasını gerektirir. Bu düzen, uzantı tarafından uygulanan işlevlere giriş olarak kullanılan verileri almak için sorguların yürütülmesinden vb. oluşur.
Şema yeniden paketleme için izin reddedildi
Şu anda, bu uzantı tarafından oluşturulan yeniden paketleme şemasına izinler sağladığımız için, yalnızca bağlamından pg_repackişlevselliği çalıştırmayı azure_pg_admin destekliyoruz.
olmayan bir tablonun azure_pg_adminsahibi çalıştırmayı pg_repackdenerse aşağıdaki hatayı aldığı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ırın.
pg_stat_statements
pg_stat_statements uzantısı, veritabanınızda çalışan tüm sorguların bir görünümünü sağlar. Bu bilgiler, üretim sistemindeki sorgu iş yükü performansınızı anlamak için kullanışlıdır.
pg_stat_statements uzantısı, SQL deyimi yürütme istatistiklerini izlemenin bir aracı sağlamak için postgreSQL için Azure Veritabanı esnek sunucu örneklerine önceden yüklenirshared_preload_libraries.
Güvenlik nedeniyle, pg_stat_statements uzantısınıizin verilenler listesine eklemeli ve CREATE EXTENSION komutunu kullanarak yüklemelisiniz.
uzantısının hangi deyimleri izlediğini denetleyen ayarı pg_stat_statements.trackvarsayılan olarak topayarlanır; yani doğrudan istemciler tarafından verilen tüm deyimler izlenir. Diğer iki izleme düzeyi ve noneşeklindedirall. Bu ayar sunucu parametresi olarak yapılandırılabilir.
Uzantının her SQL deyimini günlüğe kaydederken sunucu performansında sağladığı sorgu yürütme bilgileri pg_stat_statements arasında bir denge vardır. Uzantıyı pg_stat_statements etkin bir şekilde kullanmıyorsanız olarak ayarlamanız pg_stat_statements.tracknoneönerilir. Bazı üçüncü taraf izleme hizmetleri sorgu performansı içgörüleri sunmak için kullanabilir pg_stat_statements , bu nedenle sizin için uygun olup olmadığını onaylayın.
postgres_fdw
Uzantı, postgres_fdw bir PostgreSQL için Azure Veritabanı esnek sunucu örneğinden aynı sunucudaki başka bir veritabanına veya başka bir veritabanına bağlanmanızı sağlar. PostgreSQL için Azure Veritabanı, 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
Uzantıyı pgstattuple kullanarak Postgres 11 ile 13 arasındaki sürümlerde şemada pg_toast tutulan nesnelerden tanımlama grubu istatistiklerini almaya çalışırken , "şema pg_toast için izin reddedildi" hatasını alıyorsunuz.
Şema pg_toast için izin reddedildi
PostgreSQL için Azure Veritabanında esnek sunucu örneği kullanan müşteriler, PostgreSQL sürüm 11, 12 veya 13 ile pgstattuple uzantısını pg_toast şeması içindeki nesnelerde kullanamaz.
PostgreSQL 16 ve 17'depg_read_all_data, rolüne otomatik olarak verilir ve azure_pg_admin düzgün çalışmasına izin verilirpgstattuple. PostgreSQL 14 ve 15'te müşteriler aynı sonucu elde etmek için pg_read_all_data rolü el ile verebilirazure_pg_admin. Ancak PostgreSQL 11 ile 13 pg_read_all_data arasında rol yoktur.
Müşteriler gerekli izinleri doğrudan veremiyor. Şema altındaki nesnelere erişmek için komutunu çalıştırabilmeniz pgstattuple gerekiyorsa, bir Azure desteği isteğipg_toast.
timescaleDB
timescaleDB Uzantı, PostgreSQL uzantısı olarak paketlenmiş bir zaman serisi veritabanıdır. Zaman odaklı analitik işlevler ve iyileştirmeler sağlar ve Postgres'i zaman serisi iş yükleri için ölçeklendirir.
Timescale, Inc. PostgreSQL için Azure Veritabanı'nın TimescaleDB Apache-2 sürümünün kayıtlı ticari markası olan TimescaleDB hakkında daha fazla bilgi edinin.
TimescaleDB'yi yükleme
timescaleDB kullanmak için, uzantının izin listesine alındığından, kitaplığının yüklendiğinden ve işlevselliğini kullanmayı planladığınız veritabanına uzantının yüklendiğinden emin olun.
Artık sıfırdan bir TimescaleDB hiper tablosu oluşturabilir veya PostgreSQL'de mevcut zaman serisi verilerini geçirebilirsiniz.
ve pg_dumpkullanarak pg_restore zaman ölçeği veritabanını geri yükleme 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
Yordamı çalıştırırken SELECT timescaledb_post_restore() timescaledb.restoreing bayrağını güncelleştirirken izinlerin reddedilmesine neden olabilirsiniz. Bu hatayı alma nedeniniz, Cloud PaaS veritabanı hizmetlerinde sınırlı ALTER DATABASE izni olmasıdır. Bu durumda, Zaman Ölçeği veritabanını yedeklemek ve geri yüklemek için aracı kullanarak timescaledb-backup alternatif bir 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 yüksek performanslı hale getiren bir programdır.
Bunu yapmak için aşağıdaki adımları izleyin:
Burada ayrıntılı olarak açıklandığı gibi araçları yükleyin.
Esnek sunucu örneği ve veritabanı PostgreSQL için Azure Veritabanı bir hedef oluşturun.
Zaman Ölçeği uzantısını etkinleştirin.
azure_pg_adminrolünü ts-restore tarafından kullanılan kullanıcıya verin.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ı, kullanıcıdan sadece basit bir etkileşimle PostgreSQL için Azure Veritabanı esnek sunucu örneğinde yerinde ana sürüm yükseltmesi gerçekleştiren bir yerinde sürüm yükseltme özelliği sunar. Yerinde ana sürüm yükseltmesi PostgreSQL için Azure Veritabanı 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ükseltmeleri belirli uzantıları desteklemez ve belirli uzantıları yükseltmeye yönelik bazı sınırlamalar vardır.
anon, Apache AGE, dblink, orafce, postgres_fdw ve timescaledb uzantıları, yerinde ana sürüm güncelleştirme özelliği kullanılırken, Azure Veritabanı for PostgreSQL esnek sunucu örneği sürümlerinin hiçbirinde desteklenmez.
Dikkat edilmesi gereken belirli noktalara sahip modüller
Aşağıdaki liste, PostgreSQL için Azure Veritabanı esnek sunucu örneğinde kullanıldığında dikkat edilmesi gereken tüm desteklenen modülleri numaralandırır:
pg_failover_slots
pg_failover_slots
Modül, pg_failover_slots hem mantıksal çoğaltma hem de yüksek kullanılabilirlik özellikli sunucularla çalışırken PostgreSQL için Azure Veritabanı'nı 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.
pg_failover_slots modülü kullanma hakkında daha fazla bilgi ve yönergeler bulabilirsiniz.
Modülü pg_failover_slots kullanmak için, sunucu başlatıldığında kitaplığının yüklendiğinden emin olun.