Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Количество записей в базе данных уменьшается, а размер нет (InnoDB)???
 
 автор: mstf   (23.05.2006 в 11:33)   письмо автору
 
 

Добрый день,

Есть БД, таблицы типа innodb.
Общее кол-во записей в таблицах больше 20 млн. Соответсвенно и файл ibdata1 весит 10 гигабайт. Решил поудалять записи из таблиц с целью уменьшить как кол-записей так и размер БД, НО сам файл ibdata1 как весил 10Гб, так и остался, при том что кол-во записей сократилось втрое.

Что такое может быть? Вроде и комп и mysql перегружал - не помогает

   
 
 автор: Trianon   (23.05.2006 в 11:44)   письмо автору
 
   для: mstf   (23.05.2006 в 11:33)
 

запрос OPTIMIZE TABLE таблица пробовали?

   
 
 автор: mstf   (23.05.2006 в 11:49)   письмо автору
 
   для: Trianon   (23.05.2006 в 11:44)
 

OPTIMIZE TABLE делать по таблицам в которых я удалял записи ? или по всем таблицам БД?

   
 
 автор: Trianon   (23.05.2006 в 12:02)   письмо автору
 
   для: mstf   (23.05.2006 в 11:49)
 

Для тех, где число записей уменьшилось в разы.

   
 
 автор: cheops   (23.05.2006 в 12:44)   письмо автору
 
   для: mstf   (23.05.2006 в 11:33)
 

InnoDB-таблицы хранятся в едином табличном пространстве, объём которого определяется в конфигурационном файле my.cnf или my.ini - даже если в этот табличном пространстве не будет ни одной записи - оно всё равно будет занимать 10 Gb.

   
 
 автор: Trianon   (23.05.2006 в 12:58)   письмо автору
 
   для: cheops   (23.05.2006 в 12:44)
 

И вправду... не заметил тип хранилища....

Да, касательно освобождения пространства из-под InnoD, мануал дает весьма грустные советы:
На данный момент нельзя удалить файл данных из InnoDB. Чтобы уменьшить размер своей базы данных, необходимо воспользоваться mysqldump, чтобы сделать дамп всех своих таблиц, создать новую базу данных и импортировать таблицы в новую базу данных.

   
 
 автор: mstf   (23.05.2006 в 13:10)   письмо автору
 
   для: Trianon   (23.05.2006 в 12:58)
 

ой ёёё,

а попроще никак??

это к примеру я ежедневно совершаю какието опреации по уменьшению кол-ва записей, и ежедневно мне надо будет делать mysqldump для того, чтобы и размеры в мегабайтах тоже уменьшились??

   
 
 автор: Trianon   (23.05.2006 в 13:14)   письмо автору
 
   для: mstf   (23.05.2006 в 13:10)
 

А что Вас смущает? Пространство внутри файла всё равно используется повторно.
Вы же не будете выполнять глобальные чистки ежедневно. И даже раз в месяц.
А раз в год такое можно сделать.

   
 
 автор: mstf   (23.05.2006 в 13:31)   письмо автору
 
   для: Trianon   (23.05.2006 в 13:14)
 

в том то и дело, что ежемесячно надо будет такое делать.
кол-во записей в некоторых таблицах БД растет большими темпами(за месяц 20-30 млн. записей) и делать склейку данных - просто необходимо. Я вообщето планировал написать крон, который ЕЖЕДНЕВНО будет такое делать, но видать не судьба.
:(((

   
 
 автор: Trianon   (23.05.2006 в 16:51)   письмо автору
 
   для: mstf   (23.05.2006 в 13:31)
 

Если Вы будете запускать cron-процесс ежедневно, и он будет удерживать базу от раздувания, база будет оставаться в пределах порядка 1Гб. Тогда зачем Вам её систематически сжимать через дамп, рискуя каждый раз, что что-то пойдет наперекосяк?

   
 
 автор: mstf   (23.05.2006 в 16:25)   письмо автору
 
   для: Trianon   (23.05.2006 в 12:58)
 

ответьте пожалуйста на еще один вопрос.
mysqldump корректно работает с типом Innodb и большим объемом информации? Вроде я гдето читал, что в моем случае mysqldump'ом нужно пользоваться осторожно. Если можно, то синтаксис такой mysqldump --opt БАЗА > 1.sql ? никаких дополнительных ключей не надо?

   
 
 автор: mstf   (23.05.2006 в 13:06)   письмо автору
 
   для: cheops   (23.05.2006 в 12:44)
 

в my.cnf не указан объем БД, или я не то смотрю? не подскажите какая запись?
кроме как вот этой
innodb_data_file_path = ibdata1:10M:autoextend
ничего с мегабайтами не нашел.

Но с другой стороны если указан объем данных, то почему у меня файл постоянно растет, а не содает новый файл по достижению указанных размеров?

   
 
 автор: Trianon   (23.05.2006 в 13:12)   письмо автору
 
   для: mstf   (23.05.2006 в 13:06)
 

>innodb_data_file_path = ibdata1:10M:autoextend
Означает, что первоначально хранилище занимает 10 Мб, но ему разрешено расширяться в случае необходимости. Вот оно и выросло до 10 гигов. "Сдуваться " оно само не умеет.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования