ApsaraDB RDS for PostgreSQL örneğinizde disk G/Ç'si bir darboğaz haline geldiğinde, G/Ç hızlandırma özelliği geçici tabloları ve dosyaları yüksek hızlı önbellek disklere yönlendirerek karmaşık sorgu performansını %100'e kadar artırır. Bu özellik ücretsizdir ve uygulama değişikliği gerektirmez.
Nasıl çalışır?
Genel ESSD'ler (Enterprise SSD), bellek ile ESSD depolama arasında ara katman olarak yüksek hızlı önbellek diskleri kullanan üç katmanlı bir depolama mimarisine sahiptir. G/Ç hızlandırma özelliği, geçici verileri bu önbellek katmanına yönlendirir.
G/Ç hızlandırma olmadan, sorgu yürütme sırasında oluşturulan geçici tablolar ve dosyalar dahil tüm veriler bulut disklerde saklanır. G/Ç hızlandırma etkinleştirildiğinde, sorgu yürütücüsü verileri türlerine göre ayırır:
Geçici olmayan veriler (normal tablolar, görünümler): işleme için her zamanki gibi bulut disklerden belleğe okunur.
Geçici veriler (geçici tablolar ve dosyalar): doğrudan önbellek disklerde okunur ve yazılır.
ApsaraDB RDS for PostgreSQL, önbellek disk katmanını temsil etmek için rds_temp_tablespace tablespace alanını kullanır. Açık bir tablespace ataması olmadan oluşturulan geçici nesneler, temp_tablespaces parametresini ayarladığınızda otomatik olarak rds_temp_tablespace içine yerleştirilir.
Önbellek disk içeriği kalıcı değildir. rds_temp_tablespace içinde saklanan veriler, örnek teknik özellikleri değişiklikleri veya diğer veri geçiş işlemleri sırasında kaybolur. Geçici olmayan veritabanı nesnelerini bu tablespace alanında saklamayın.
Kullanım senaryoları
G/Ç hızlandırma, sorguların mevcut belleği aşan büyük hacimli geçici veriler oluşturduğu durumlarda en etkilidir:
Sıralama, gruplama, toplama ve birleştirme işlemleri: ara sonuçların diske taşındığı işlemler.
Ortak tablo ifadeleri (CTE) kullanan özyinelemeli sorgular: büyük ara sonuç kümelerini somutlaştıran CTE'ler.
Destekleyici dizinleri olmayan ad hoc sorgular: tam tarama gerektiren karmaşık filtreler veya toplamalar.
Büyük tablolar veya birden fazla tablo üzerindeki analitik sorgular: yüksek G/Ç talepleri olan raporlama ve analitik iş yükleri.
Geçici tablolar kullanan iş yükleri: açıkça geçici tablolar oluşturan herhangi bir uygulama mantığı.
Ön koşullar
G/Ç hızlandırmayı etkinleştirmeden önce örneğinizin aşağıdaki tüm gereksinimleri karşıladığından emin olun:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Örnek ayrıca aşağıdaki bölgelerden ve alanlardan birinde bulunmalıdır:
Bölge | Alan |
China (Chengdu) | Zone B |
China (Beijing) | Zone I |
China (Shanghai) | Zone M |
Zone N | |
China (Hangzhou) | Zone J |
Satın alma sayfasında I/O Acceleration seçeneğini etkinleştirdikten sonra, kullanılabilirliği Zone and Network of Primary Node bölümünde onaylayın.
G/Ç hızlandırmayı etkinleştirme
G/Ç hızlandırmayı etkinleştirmek veya devre dışı bırakmak yaklaşık 30 saniyelik bir hizmet kesintisine neden olur. Bu işlemi yoğun olmayan saatlerde gerçekleştirin.
Seçenek 1: Örnek oluştururken etkinleştirme (önerilen)
Bir RDS örneği oluştururken, yukarıda listelenen ön koşulları karşılamak üzere parametreleri yapılandırın ve ardından I/O Acceleration seçeneğini açın.

Seçenek 2: Mevcut bir örnekte etkinleştirme
Instances sayfasına gidin. Üst gezinme çubuğunda örneğin bulunduğu bölgeyi seçin, ardından örnek ID'sine tıklayın.
Basic Information bölümünde, Storage Type öğesinin sağındaki Configure General ESSD seçeneğine tıklayın.
-
İletişim kutusunda I/O Acceleration seçeneğini açın.

temp_tablespaces parametresini ayarlama
G/Ç hızlandırmayı etkinleştirdikten sonra rds_temp_tablespace tablespace alanı otomatik olarak oluşturulur. Geçici nesnelerin varsayılan olarak önbellek diskleri kullanması için temp_tablespaces parametresini rds_temp_tablespace olarak ayarlayın.
Parametreleri değiştirme talimatları için bkz. ApsaraDB RDS for PostgreSQL örneğinin parametrelerini değiştirme.
Ayarı yalnızca geçerli oturum için uygulamak üzere aşağıdaki komutu çalıştırın:
SET temp_tablespace TO 'rds_temp_tablespace';
Bulut disklere geri dönmek için temp_tablespaces değerini '' olarak ayarlayın.
Yapılandırmayı doğrulama
Örneğe bağlanın (bkz. ApsaraDB RDS for PostgreSQL örneğine bağlanma), ardından aşağıdaki deyimleri çalıştırın:
-- Create a regular table
CREATE TABLE test_table (di INT);
-- Create a temporary table
CREATE TEMPORARY TABLE test_temp_table (id INT);
-- Query which tablespace each table uses
SELECT
c.relname AS table_name,
COALESCE(t.spcname, 'pg_default') AS tablespace_name
FROM
pg_class c
JOIN
pg_namespace n ON c.relnamespace = n.oid
LEFT JOIN
pg_tablespace t ON c.reltablespace = t.oid
WHERE
c.relkind = 'r'
AND c.relname IN ('test_table', 'test_temp_table');
Beklenen çıktı:
table_name | tablespace_name
------------------+---------------------
test_table | pg_default
test_temp_table | rds_temp_tablespace
(2 rows)
test_temp_table öğesinin rds_temp_tablespace içinde görünmesi, G/Ç hızlandırmanın etkin olduğunu gösterir.
Kullanım notları
Önbellek disk alanı, örnek tipinize göre tahsis edilir. Önbellek dolduğunda, geçici veri yazan deyimler için
ERROR: could not write to file "pg_tblspc/xxxx": No space left on devicehatası bildirilir. Geçici olmayan veriler üzerinde çalışan SQL deyimleri etkilenmez.rds_temp_tablespaceiçindeki veriler kalıcı değildir. Örnek teknik özellikleri değişiklikleri veya diğer veri geçiş işlemleri sırasında kaybolur.
Sorun giderme
ERROR: No space left on device
Bu hata, rds_temp_tablespace tablespace alanının dolu olduğu anlamına gelir. Aşağıdaki sırayla ele alın:
Geçerli oturumu sonlandırın ve yeniden bağlanın. Örnek, bir oturum sonlandığında geçici dosyaları temizler. Yeniden bağlandıktan sonra deyimi tekrar çalıştırın.
temp_tablespacesdeğerini''olarak ayarlayarak bulut disklere geri dönün. Bu işlem önbellek disk sınırını kaldırır ancak G/Ç hızlandırmanın performans avantajını da ortadan kaldırır.
Sırada ne var?
ApsaraDB RDS for PostgreSQL tarafından desteklenen tüm depolama türleri için bkz. Depolama türleri.
Genel ESSD'lerin ve üç katmanlı mimarilerinin genel bir bakışı için bkz. Genel ESSD'ler.
İş yükleriniz öngörülemez zirve IOPS taleplerine sahipse, G/Ç hızlandırmaya ek olarak G/Ç patlamasını etkinleştirmeyi düşünün.