Hologres V1.3.37 ve sonraki sürümler, sıcak ve soğuk veriler için katmanlı depolamayı destekler. Bu sayede veri katmanlarını etkili bir şekilde yönetebilirsiniz. Bu konuda katmanlı depolamanın nasıl kullanılacağı açıklanmaktadır.
Giriş
Hologres iki depolama türü sunar: Standard ve Infrequent Access.
Standard depolama, tamamen SSD tabanlı sıcak depolama kullanır. Hologres'teki varsayılan depolama türüdür ve düşük gecikme süresi ile yüksek performanslı veri erişimi gereksinimlerini karşılar. Çoğu senaryo için Standard depolama en etkili ve maliyet açısından verimli seçenektir. Bu belgede bu tür sıcak depolama olarak adlandırılır.
Infrequent Access depolama, tamamen HDD tabanlı soğuk depolama kullanır. Nadiren erişilen veriler için düşük maliyetli depolama ihtiyaçlarını karşılar ve gecikme süresine duyarlı olmayan veya nadiren erişilen çok büyük veri kümeleri için uygundur. Bu belgede bu tür soğuk depolama olarak adlandırılır.
Birincil/ikincil örnekler için soğuk depolamayı etkinleştirmek üzere Hologres V1.3.55 veya sonraki bir sürüme yükseltin.
Hologres ayrıca tablo düzeyinde katmanlı depolamayı destekler. Bölüm alt tabloları için depolama ortamını dinamik olarak ayarlamak üzere CREATE PARTITION TABLE özelliğini kullanabilirsiniz.
Hologres V2.1'den itibaren, soğuk depolama erişim hızını artırmak için SSD tabanlı önbellek hızlandırma desteklenir. Şu anda yalnızca varsayılan olarak ayrılan önbellek alanı desteklenmektedir. Önbellek hızlandırma varsayılan olarak etkindir ve erişim performansını iki kattan fazla artırır.
Ön koşullar
Yalnızca Hologres V1.3.37 ve sonraki sürümler sıcak ve soğuk depolama katmanlarını destekler. Örneğiniz daha eski bir sürüm çalıştırıyorsa, hata bildiriminde bulunmak için Common upgrade preparation failure errors kılavuzunu kullanın veya Hologres DingTalk grubuna katılın. Daha fazla bilgi için bkz. How do I get more online support?.
Abonelik örneklerinde, daha eski sürümlerden Hologres V1.3.37'ye yükseltme yapıldığında Infrequent Access depolama kotası varsayılan olarak 0 GB olur.
Notlar
Hologres tablo depolaması Data ve Meta bileşenlerinden oluşur. Data kullanıcı verilerinizi saklarken Meta tablo meta verilerini saklar. Katmanlı depolamada yalnızca Data kısmının depolama ortamını ayarlayabilirsiniz. Performans nedenleriyle Meta her zaman sıcak depolamada tutulur. Bu nedenle, bir tablonun depolama ilkesini soğuk depolama olarak ayarlasanız bile küçük miktarda sıcak depolama tüketir ve cüzi bir sıcak depolama ücreti yansıtılır.
Hizmetlerinizi etkilememek için sıcaktan soğuğa veri geçiş görevleri düşük öncelikle çalışır. Bir tablonun Data depolama ilkesini değiştirdikten sonra değişiklik hemen etkili olmaz. Hologres arka planda eşzamansız olarak veri geçişi yapar. Varsayılan olarak geçiş gece yarısı başlar. Hologres V2.2'den itibaren geçiş zamanını özelleştirebilirsiniz. Daha fazla bilgi için bkz. Dynamic partition management.
Soğuk depolama tablosuna yeni veri yazıldığında veriler önce sıcak depolamaya yazılır. Arka plan görevi verileri eşzamansız olarak soğuk depolamaya geçirir; bu durum belirli bir sıcak depolama ücretine neden olur.
Disk arama süresi sınırlamaları nedeniyle Flink boyut tabloları veya sunum senaryoları gibi nokta sorgusu senaryolarında soğuk depolama tablolarını kullanmayın. Soğuk depolama tabloları, sıcak depolama tablolarına kıyasla iki büyüklük derecesi daha düşük okuma aktarım hızını destekler.
Satır yönelimli tabloları soğuk depolama kullanacak şekilde ayarlamayın.
Toplu sıcak-soğuk veri dönüştürme işlemi sırasında tüm tablo tabletleri açılır ve bu da bellek kullanımını artırır. Aynı anda en fazla 200 tablo dönüştürün.
Katmanlı depolama tabloları oluşturun
Tablo oluştururken SET_TABLE_PROPERTY içindeki storage_mode parametresini ayarlayarak veri depolama ilkesini belirtin. Daha fazla bilgi için bkz. CREATE TABLE.
Bölümlenmemiş tablolar
Bölümlenmemiş tablolar için depolama ilkesi ayarlama
Bölümlenmemiş tablolar için depolama ilkesini ayarlamak üzere SET_TABLE_PROPERTY kullanın. Desteklenen seçenekler şunlardır:
hot (sıcak depolama).
cold (soğuk depolama).
Örneğin, tbl1 tablosunu soğuk depolama kullanacak şekilde ayarlamak için aşağıdaki kodu çalıştırın:
-- Specify cold storage when creating the table
BEGIN;
CREATE TABLE tbl1 (
"id" INT NOT NULL,
"name" TEXT NOT NULL
);
CALL set_table_property('tbl1', 'storage_mode', 'cold');
COMMIT;
Bölümlenmemiş tablolar için depolama ortamını değiştirme
Hologres tablo oluşturulduktan sonra depolama ortamının değiştirilmesini destekler. Örneğin, tbl1 tablosunu sıcak depolamaya değiştirmek istediğinizde sistem verileri eşzamansız olarak sıcak depolamaya geçirir. Örnek:
-- Change storage medium to hot storage after table creation
CALL set_table_property('tbl1', 'storage_mode', 'hot');
Bölümlenmiş tablolar
Bölümlenmiş tablolar için depolama ilkesi ayarlama
Bölümlenmiş tablolar da depolama ilkelerini ayarlamak için SET_TABLE_PROPERTY kullanır. Alt bölümler varsayılan olarak üst tablonun depolama özelliğini devralır ancak ayrı ayrı da ayarlanabilir. Desteklenen seçenekler şunlardır:
hot (sıcak depolama).
cold (soğuk depolama).
Örneğin, üst bölüm tablosunu (tbl2) soğuk depolama olarak ayarlamak onun tüm alt bölümlerinin (örneğin tbl2_v1) soğuk depolama kullanmasına neden olur. Kod:
-- Specify cold storage when creating the table
BEGIN;
CREATE TABLE tbl2(
c1 TEXT NOT NULL,
c2 TEXT
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl2', 'storage_mode', 'cold');
CREATE TABLE tbl2_v1 PARTITION OF tbl2 FOR VALUES IN ('v1');
COMMIT;
Bölümlenmiş tablolar için depolamayı değiştirme
Hologres tablo oluşturulduktan sonra depolama ortamının değiştirilmesini destekler. Örneğin, üst bölüm tablosu tbl2'yi sıcak depolamaya değiştirmek onun tüm alt bölümlerinin eşzamansız olarak sıcak depolamaya geçirilmesine neden olur. Örnek:
-- Change storage policy to hot storage after table creation
CALL set_table_property('tbl2', 'storage_mode', 'hot');
Belirli bir alt bölümü soğuk depolama olarak ayarlamak için o bölümün storage_mode özelliğini değiştirin. Sistem o bölümü derhal soğuk depolamaya geçirmeye başlar. Örnek:
-- Create multiple child partitions
CREATE TABLE tbl2_v2 PARTITION OF tbl2 FOR VALUES IN ('v2');
CREATE TABLE tbl2_v3 PARTITION OF tbl2 FOR VALUES IN ('v3');
-- Query table properties; they currently inherit the parent's hot storage setting
SELECT * FROM hg_table_storage_status('public', 'tbl2');
-- Change a child partition to cold storage
CALL set_table_property('tbl2_v3', 'storage_mode', 'cold');
Bölümlenmiş tablolar için depolama ortamını dinamik olarak yönetin
Bölüm depolama ortamlarını akıllıca yönetmek için sıcaktan soğuğa veri dönüşüm kurallarını tanımlamak üzere dinamik bölümlemeyi kullanın. Bu yaklaşım maliyet ve performansı etkili bir şekilde dengeleyen akıllı katmanlı depolamayı sağlar. Dinamik bölüm yönetimi hakkında daha fazla bilgi için bkz. Dynamic partition management.
Depolama ortamı durumunu sorgulama
Tablo depolama durumunu kontrol etmek için hg_table_storage_status işlevini çağırın. hg_table_storage_status yalnızca veri depolama boyutunu gösterir, Meta depolama boyutunu içermez. Kullanım şekli:
SELECT * FROM hg_table_storage_status('<schema_name>', '<table_name>');
|
|
|
|
|
|
|
|
|
Aşağıdaki sonuç döndürülür:
Sütun Adı | İçerik |
table_name |
|
hot_size | Bayt cinsinden sıcak depolama boyutu |
cold_size | Bayt cinsinden soğuk depolama boyutu |
status | Durum:
|
Örnekler:
-- Non-partitioned table
SELECT * FROM hg_table_storage_status('public', 'tbl1');-- returns size in bytes
table_name | hot_size | cold_size | status
------------+----------+---------------+--------
tbl1 | 145643 | 3685 | transferring
-- Parent partition table
SELECT * FROM hg_table_storage_status('public', 'tbl2');-- returns size in bytes
table_name | hot_size | cold_size | status
-----------------+----------+-----------+--------
tbl2_2022062222 | 0 | 0 | hot
tbl2_2022062221 | 1125 | 0 | hot
tbl2_2022062220 | 1245 | 0 | hot
tbl2_2022062219 | 1358 | 0 | hot
tbl2_2022062218 | 0 | 1875 | cold
tbl2_2022062217 | 0 | 1143 | cold
tbl2_2022062216 | 0 | 1299 | cold
Tablo erişim sıklığını sorgulama
Hologres V1.3.37'den itibaren günlük sistemi tablosu hologres.hg_table_info bir örnek içindeki tablolar için günlük istatistikler toplar. Hedefe yönelik optimizasyon için tablo bilgilerini görüntülemek ve analiz etmek üzere bu verileri kullanın. Daha fazla bilgi için bkz. View and analyze table statistics. Sıcak/soğuk depolama hacmini, tablo erişim sıklığını ve bölüm erişim sıklığını elde etmek ve sıcaktan soğuğa veri dönüşümü yapılıp yapılmayacağına karar vermek için bu tabloyu sorgulayın. Örnek sorgular:
Bölümlenmemiş tablolar
SELECT a.table_name,
(a.total_read_count - b.total_read_count) AS read_count,
(a.total_write_count - b.total_write_count) AS write_count,
a.hot_storage_size
FROM (SELECT * FROM hologres.hg_table_info
WHERE type='TABLE' AND collect_time::DATE = CURRENT_DATE - interval '1 day') a
JOIN
(SELECT * FROM hologres.hg_table_info
WHERE type='TABLE' AND collect_time::DATE = CURRENT_DATE - interval '${days} day') b
ON a.table_name = b.table_name
ORDER BY hot_storage_size DESC;
Bölümlenmiş tablolar
Tüm bölümleri sorgulayın:
SELECT parent_table_name,COUNT(*) AS partition_cnt,
sum(hot_storage_size)/1024/1024/1024 AS hot_size_gb
FROM hologres.hg_table_info
WHERE type = 'PARTITION' AND collect_time::DATE = CURRENT_DATE - interval '1 day'
GROUP BY parent_table_name
ORDER BY hot_size_gb DESC;