October 2009

You are currently browsing the monthly archive for October 2009.

…и наконец моё любопытство возобладало, и я решил таки заглянуть, что же такого понаделел HP в TPC-H…


Не удивляйтесь, но поначалу я не предавал особого значения появляющимся с завидной регулярностью (раз в месяц) новым, ничем с виду не примечательным результатам. Но, когда появился третий из них, я заметил тенденцию, что они становятся с каждым разом немного ХУЖЕ и ДОРОЖЕ. Именно тогда мне стало любопытно, в чём там “порылась собака”…
Конечно, виною всему было то, как представлены результаты в сводной таблице: Complete TPC-H Results List – Sorted by Date Submitted
Просто, в представлении на сайте не видно главного изменения, поскольку испокон веков эта составляющая была неизменной и только в последние год – два ситуация начала выправляться к лучшему. На самом деле, HP в последнем из трёх своих результатов показал, как SAS диски могут оказаться более дорогим решением, чем SSD диски, при близкой производительности.
Вот несколько видоизменённое представление результатов, с детализацией по конфигурации дисковой подсистемы:

Ссылки на подробные описания тестов:

Результаты потрясающие! Оказывается решение на базе SSD получается чуть ли не в двое дешевле, чем на привычных нам SAS.
Похоже, гегемонии производителей жёстких дисков приходит долгожданный конец, а точнее, последний рудимент зари IBM PC, этот кошмарный механический монстр, самое слабое звено любого компьютера – HDD может уйти в небытие!

Очень часто получается так, что реальные бизнес -требования оказываются сложнее, чем возможности мастеров программного инструментария, поставляемого разными производителями ПО для задач администрирования SQL Server 2008. Например, недавно мне стало недостаточно гибкости мастера создания задачи резервного копирования базы данных для стандартного плана обслуживания БД. У меня возникла необходимость делать копию в несколько фалов на разных дисковых массивах и поддерживать хронологию копий по единым правилам. В несколько файлов выполнять резервное копирование бывает необходимо для повышения производительности этой операции, например, как это рекомендовано в этой статье: “A Technical Case Study: Fast and Reliable Backup and Restore of Multi-Terabytes Database over the Network“.
Мастер SSMS может либо поддерживать хронологию для одного файла копий, либо копировать в фиксированные имена нескольких указанных файлов. К счастью, совершенно не составляет труда заменить задачу резервного копирования на задачу исполнения сценария T-SQL, в котором выполнить нужную работу. Ниже представлен соответствующий шаблон сценария, взяв который за основу можно составить необходимую задачу исполнения сценария T-SQL.

    DECLARE @path varchar(128)
    DECLARE @DBName AS nvarchar(4000) = 'ИМЯБАЗЫДАННЫХ'
    DECLARE @File1 AS nvarchar(4000), @File2 AS nvarchar(4000), @File3 AS nvarchar(4000)
    -- Если диск для копий один, и он корректно задан, узнать путь к папке копий можно так:
    EXEC master..xp_regread
        @rootkey='HKEY_LOCAL_MACHINE',
        @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer',
        @value_name='BackupDirectory',
        @value=@path OUTPUT
    -- Формируем часть имени файла, в которой фиксируется имя БД и время создания копии
    DECLARE @FileName AS nvarchar(4000) = @path + '\' + @DBName +'\' + @DBName + '_' + 'backup_' +
        CONVERT(nvarchar(4),YEAR(CURRENT_TIMESTAMP), 112 ) + '_' +
        CASE MONTH(CURRENT_TIMESTAMP)
            WHEN 1 THEN '01' WHEN 2 THEN '02' WHEN 3 THEN '03'
            WHEN 4 THEN '04' WHEN 5 THEN '05' WHEN 6 THEN '06'
            WHEN 7 THEN '07' WHEN 8 THEN '08' WHEN 9 THEN '09'
            ELSE CONVERT(nvarchar(2),MONTH(CURRENT_TIMESTAMP), 112 ) END
        + '_' +
        CASE DAY(CURRENT_TIMESTAMP)
            WHEN 1 THEN '01' WHEN 2 THEN '02' WHEN 3 THEN '03'
            WHEN 4 THEN '04' WHEN 5 THEN '05' WHEN 6 THEN '06'
            WHEN 7 THEN '07' WHEN 8 THEN '08' WHEN 9 THEN '09'
            ELSE CONVERT(nvarchar(2),DAY(CURRENT_TIMESTAMP), 112 ) END
        + '_' +
        REPLACE(REPLACE(CAST(CONVERT(time(7),CURRENT_TIMESTAMP, 109 ) AS nvarchar(14)),':',''),'.','_');
    -- Добавляем к пути и имени файла идентификаторы и расширения
    SELECT @File1 = @FileName + + '01.bak', @File2 = @FileName + + '02.bak', @File3 = @FileName + + '03.bak'
    -- Запускаем резервное копирование в три файла.
    BACKUP DATABASE [ИМЯБАЗЫДАННЫХ] TO
            DISK = @File1,
            DISK = @File2,
            DISK = @File3
    WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10