Визначення розміру таблиці в SQL Server
Ви ніколи не замислювалися, наскільки велика таблиця дійсно знаходиться у вашій базі даних? Ви знаєте, що в таблиці є мільйон рядків, але скільки місця займає це?
SQL Server надає вбудовану збережену процедуру, яку можна запустити, щоб легко показати розмір таблиці, включаючи розмір індексів . які можуть вас здивувати.
Ось приклад цього в дії:
Дуже корисний матеріал. Завжди цікаво бачити, що індекси більше, ніж фактичні дані.
Як дізнатися розміри таблиці через sql
Не так давно я зацікавився максимальним розміром таблиці у свого сайту, де продаються мої курси. Там ведеться постійна статистика відвідувань. У підсумку в одній таблиці вже більше мільйона записів. На щастя, пошук по цій таблиці потрібен тільки мені, а я можу і почекати, а додавання нового запису відбувається все одно вмить. Але я подумав, що бувають випадки, коли таблиця повинна бути максимум деякого розміру. А ось далі вона повинна або віддалятися, або створюватися нова. Як це робиться? Впізнається розмір таблиці через SQL. а далі вона або частково / повністю очищається, або переноситься в який-небудь бекап, де просто сховище старих даних. І в цій статті я покажу, як дізнатися розмір таблиці через SQL.
Ось такий запит виведе інформацію про статус таблиці:
SHOW TABLE STATUS LIKE ‘table’
Рекомендую виконати цей запит на який-небудь таблиці в PHPMyAdmin. щоб відразу побачити, що він робить. Там багато різних параметрів, але нас з Вами цікавить “Data_length”. Саме він відповідає за розмір таблиці. Перевіряючи його, Ви можете вирішувати: проводити очистку даних чи ні.
Зрозуміло, перевірку треба проводити в автоматичному режимі, наприклад, раз на добу, задавши це через cron.
Також врахуйте, що це необхідно робити тільки якщо Вам потрібна швидкодія з пошуку в цій таблиці. В іншому випадку, це взагалі не потрібно. Якщо Ви турбуєтеся про максимальний розмір таблиці, то навряд чи Вас це торкнеться. Максимальний розмір таблиці також можна знайти в цій вибірці. За максимальний розмір відповідає параметр “Max_data_length”, і він дійсно величезний, 256 ТБ.
Якщо моя статистика буде працювати в тому ж темпі, то цього розміру вистачить приблизно на мільйон років. Тому тим, хто турбується про те, що записи перестануть поміщатися, даремно це робить. А ось ті, кому потрібен максимально швидкий пошук і вибірка по таблиці, ось тим дійсно варто задуматися, а чи не можна видалити все зайве або відправити хоча б в історію старі записи?
Запропонуйте цю статтю друзям:
Якщо Вам сподобався сайт, то розмістіть посилання на нього (у себе на сайті, на форумі, в контакті):
Вона виглядає ось так:
Схожі статті
Як визначити розмір таблиць у базі даних MySQL или MariaDB
У повсякденній роботі з MySQL користуюся безкоштовною програмою DBeaver. Там є чудова функція — дізнатися повний розмір таблиць. Проблема в тому, перед тим як показати розмір та вагу таблиць програма робить запит до всього вмісту бази даних. Якщо таблиць у БД понад сотні, і розміри понад 10-20 гігабайт, оперативно дізнатися, скільки важить одна таблиця, досить складно.
Як можна через запити дізнатися деталі щодо таблиць у базі даних і окремо щодо однієї таблиці — про це стаття 🙂
Щоб визначити розмір таблиць MySQL або MariaDB, потрібно 2 дії:
1. Підключитися до сервера баз даних будь-яким зручним способом (через CONSOLE або GUI)
2. Виконати SQL запит:
SELECT table_name AS `Table`, round(((data_length + index_length) / 1024), 2) `Size in KB` FROM information_schema.TABLES WHERE table_schema = "DBName";
де, DBName — ім’я бази даних, для якої необхідно отримати список таблиць із розмірами
3. Щоб визначити список і розмір таблиць (у кілобайтах) бази даних MySQL або MariaDB, необхідно буде виконати запит:
SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 ), 2) `Size in KB` FROM information_schema.TABLES WHERE table_schema = "DBName";
Для отримання розміру таблиць у мегабайтах, необхідно рядок:
SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "DBName";
Якщо список таблиць дуже великий, то можна скоротити виведення, додавши умову в конструкцію WHERE:
WHERE table_schema = "DBName" AND table_name = "TableName";
де, DBName — ім’я бази даних; TableName — ім’я таблиці, для якої необхідно отримати розмір
SQL запит для виведення деталей за однією таблицею:
SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 ), 2) `Size in KB` FROM information_schema.TABLES WHERE table_schema = "DBName" AND table_name = "TableName";
Якщо необхідно отримати обмежений список таблиць, наприклад, тих, що містять певні слова в назві, то можна скоротити виведення, додавши умову (like «FilterTableName») в конструкцію WHERE
WHERE table_schema = "DBName" AND table_name Like "FilterTableName";
SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 ), 2) `Size in KB` FROM information_schema.TABLES WHERE table_schema = "DBName" AND table_name Like "%TableName%";
На цьому все 🙂 Дуже сподіваюсь, що ця інформація стане вам до нагоди.
Про автора