Основи вибору оптимального розміру бази даних, MS SQL Server, Бази даних, статті

sql.ru

За матеріалами статті Брайан Найт (Brian Knight) на sqlservercentral.com:

The Basics of Sizing a SQL Server Database

Вибір оптимального розміру бази даних є непростим завданням, яке повинні вирішувати адміністратори, аналітики або розробники. Аналіз бази даних займає багато часу, перш ніж правильне рішення буде знайдено. В даній статті розповідається, як стежити за розміром бази даних після її створення і міститься кілька порад щодо вибору оптимального розміру бази даних до її створення.
Отже, яке обладнання необхідно придбати для вашої бази даних? Від вашої відповіді залежить чи буде це SAN або достатньо кілька RAID 1 дисків. На щастя, існує декілька продуктів, які досить точно визначають розмір бази даних до її створення. Наприклад, ви можете використовувати ERwin (продукт компанії CA) для визначення розміру вашої бази даних через X місяців. Ви також можете заповнити базу довільними даними використовуючи продукти, подібні до Datatect 1.6. Ті, хто відчуває в собі сміливість, можуть виконати обчислення самостійно, але будте уважні з індексами. Коли більшість людей розраховують розмір баз даних без допомогою спеціальних продуктів, вони забувають враховувати місце, необхідне для індексів, вторинних ключів та констрейнтів.
Найлегше обчислити розмір бази даних за допомогою програм моделювання баз даних, таких як ERwin. ERwin, як і більшість програм моделювання баз даних, має панель розміру БД, яка дозволяє вам вказати безліч параметрів при створенні таблиці. В ERwin ви можете вказати:

– Початкова кількість рядків
– Кількість щомісяця додаються рядки
– Чи буде стовпець містити NULL

Поєднання цих трьох чинників може дати спеціалізованому продукту можливість згенерувати достовірні звіти про розмір бази даних через деякий час. Ці звіти можуть бути виконані в HTML форматі, і їх навіть можна переглядати за допомогою об’єктів. Більшість програм моделювання баз даних враховують індекси, вторинні ключі та констрейни. Єдина річ, яку не враховує Erwin, це індексовані уявлення, які можуть займати істотне місце, якщо вони грунтуються на великих таблицях.
Коли ви маєте загальне уявлення про те, якого розміру буде ваша база даних, ви можете перевірити вашу теорію за допомогою такого продукту, як Datatect 1.6 (www.datatect.com). Datatect дозволяє вам створити реалістичні довільні дані для заповнення вашої БД. При цьому також враховується, що завантажуються дані мають вторинні ключі. Після того, як автор статті перепробував всі інші генератори даних, він схильний знаходити, що Datatect 1.6 виявився найзручнішим засобом для завантаження значного обсягу довільних даних в його БД. Автор статті вважає, що інші генератори даних працюють нестабільно і можуть легко порушити роботу CPU.
Отже, чому бажано заповнювати БД тестовими даними? Кілька місяців тому автор використовував ERwin для проектування бази даних нового продукту, розмір якої через 6 місяців експлуатації повинен був становити 50 Гб. Розробники продукту використовували для тестову БД, містила всього кілька сотень простих записів і не могли зрозуміти особливостей реалізації для баз такого розміру. Після заповнення БД з використанням Datatect вони отримали можливість знайти дефекти в додатку, які могли б привести до краху сервера через 6 місяців, коли БД вже буде в промисловій експлуатації.
За допомогою Datatect я заповнив 10 Гб таблицю реалістичними, тестовими даними за 12:00. Та ж завдання за допомогою подібного продукту іншого, більш великої фірми, зайняла більше 8 днів. Перед завантаженням даних переконайтеся, що ви прибрали всі кластерні індекси. В іншому випадку час завантаження значно зросте. Як тільки ви маєте тестову БД ви можете використовувати такі програми, як WinRunner, які дозволяють виміряти продуктивність, щоб побачити, як додаток працює з такою великою кількістю записів.
Заключний порада: слідкуйте і вивчайте (дивися і вчись!). Ви можете користуватися цією порадою, коли хочете досить точно визначити розмір БД і потім скористатися отриманими прогнозами при установці сервера. Коли автор встановлює сервер, він створює таблицю на кожному сервері, в якої веде статистику зростання БД. Кожного тижня фіксується інформація про розмір кожної БД і копіюється в електронну таблицю. Використовуючи дані з електронної таблиці можна побудувати графік для прогнозування розміру БД через рік.
Нижче наводиться приклад збереженої процедури, за допомогою якої ви можете отримувати необхідні статистичні дані:

www.sqlservercentral.com/columnists/bknight/usp_database.sql

/* Procedure for 8.0 server */
create proc usp_databases
as
  set nocount on
  declare @name sysname
  declare @SQL nvarchar(600)

  /* Use temporary table to sum up database size w/o using group by */
  create table #databases (
            DATABASE_NAME sysname NOT NULL,
                size int NOT NULL)

  declare c1 cursor for

      select name from master.dbo.sysdatabases
        where has_dbaccess(name) = 1 — Only look at databases to which we have access

  open c1
  fetch c1 into @name

  while @@fetch_status >= 0
  begin
    select @SQL = ‘insert into #databases
            select N”’+ @name + ”’, sum(size) from ‘
            + QuoteName(@name) + ‘.dbo.sysfiles’
        /* Insert row for each database */
        execute (@SQL)
        fetch c1 into @name
  end
  deallocate c1

  select

        DATABASE_NAME,
        DATABASE_SIZE = size*8,/* Convert from 8192 byte pages to K */
        RUN_DT=GETDATE()
  from #databases
  order by 1

GO

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*