Мне нужно выполнить несколько запросов на Redshift в блоке транзакции, но я немного скептически отношусь к использованию памяти блока транзакции. Я попытался заглянуть на форумы Google и AWS, чтобы узнать, как использовать память для транзакции, но безрезультатно. Я хочу знать пределы транзакций в AWS Redshift.
В настоящее время я использую кластер AWS Redshift с узлом 2 dc2.large, в котором общий объем хранилища составляет 320 ГБ. Мои требования требуют от меня выполнения некоторых запросов в блоке транзакции. Мой блок транзакций выглядит так:
BEGIN TRANSACTION ISOLATION LEVEL READ UNCOMMITTED READ WRITE;
create table bi.test_table as select * from bi.existing_table;
delete from bi.test_table where region = 'ROI';
insert into bi.test_table values (6543,'Vabville','asdRon','2019-04-03 12:10:43',12458860328121043);
update bi.transaction_region_master set city = 'UpdatedCity' where sno = 6543;
COMMIT TRANSACTION;
Есть несколько таких запросов, которые мне нужно выполнить за один раз для всей DWH Redshift. Я выполняю запросы из скрипта Python, используя библиотеку psycopg2. Текущее использование диска в кластере составляет 72%. Мои ежедневные инкрементные данные будут около 5 ГБ, тогда как существующие данные в кластере будут 250 ГБ. Общая емкость кластера составляет 320 ГБ, как указано выше. Могу ли я выполнить запросы в одном блоке транзакции или мне нужно разбить запросы на несколько блоков и отслеживать их? Сохраняется ли моментальный снимок перед фиксацией транзакции в кластере Redshift (с использованием тех же 320 ГБ пространства) или есть какое-то другое хранилище, оставленное самим AWS для этих транзакций?
РЕДАКТИРОВАТЬ: Вот мои спецификации кластера:
Тип текущего узла - dc2.large
ЦП - 7 вычислительных блоков EC2 (2 виртуальных ядра) на узел
Память - 15,25 ГБ на узел
Хранение - 160 ГБ SSD-хранилища на узел
Производительность ввода / вывода - умеренная
Платформа - 64-битная