Мне сложно понять процедуру, которую мы используем в настоящее время для увеличения пространства и уменьшения пространства (пространства вверх и вниз) из резервной базы данных. Ниже приведена пробел:Проблемы с пространством Teradata
LOCKING DBC.DiskSpace FOR ACCESS
SELECT
(((T1.MAXPERM) - (T1.MAXCURRENTPERM * T1.NUMAMPS))
- (T2.SPACE_LEFT + T1.NUMAMPS)) (FORMAT 'Z(15)9')
INTO :var_SpaceAdj
FROM Ctrl_Base.Space_Ctrl T2
,(
SELECT DATABASENAME, SUM(MAXPERM), MAX(CURRENTPERM), COUNT(*)
FROM DBC.DiskSpace
WHERE DATABASENAME = :inP_Database
GROUP BY 1)
AS T1 (DATABASENAME, MAXPERM, MAXCURRENTPERM, NUMAMPS)
WHERE T1.DATABASENAME = T2.DATABASENAME
AND (((T1.MAXPERM) - (T1.MAXCURRENTPERM * T1.NUMAMPS))
- (T2.SPACE_LEFT + T1.NUMAMPS)) >= 1000000
;
Помогите мне понять, что это делает? У нас есть таблица Ctrl_Base.Space_Ctrl где мы указываем увеличение%, тогда как пространство вверх и влево пространство ввода
С уважением, Amit
Спасибо большое Роб! Я не мог понять одну вещь здесь: – user3901666
Спасибо много Роб! Я не мог понять здесь одну вещь: (T1.MAXCURRENTPERM * T1.NUMAMPS) - вычисляет потребляемое пространство для базы данных на основе AMP, потребляющего наибольшее пространство Как это рассчитывается? Предположим, DB_SPACE = 100 ГБ, 10 AMP SYSTEM, MAXCURRENtPERM = 9GB, затем MAXCURRENTPERM * NUMAMPS = 9 * 9 = 81GB. Какое значение здесь здесь? – user3901666
В базе данных сообщается об отсутствии места, когда один или несколько AMP не могут хранить данные. В вашем примере, как только AMP, потребляющий 9 ГБ, достигнет 10 ГБ, в следующий раз, когда AMP будет поручено хранить дополнительные данные, операция завершится с ошибкой. Таким образом, представление пространства на основе MAXCURRENTPERM дает «эффективное» потребление пространства для базы данных. –