[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: OPTIMIZE TABLE как сделать грамотно?
VELIK505
Вот у себя на сайтах в админке сделал функцию ещё давно оптимизация таблиц таким образом:
<? include('funcions/checkcookie.php'); ?>

<h3>Оптимизация таблиц БД</h3>
<br>

<?
if($_POST["action"]=="optimize")
{
$mysqli->query("OPTIMIZE TABLE `tb_banner` , `tb_adminsms` , `tb_links` , `tb_rekpl` , `tb_datte` ,
`tb_advban` , `tb_rekadvr` , `tb_autorefreq` , `tb_chat` , `tb_configsites` ,
`tb_frame` , `tb_framezakaz` , `tb_istoriya` , `tb_domen` , `tb_mail` , `tb_mta` , `tb_news` , `tb_bablo` ,
`tb_refbv` , `tb_vospass` , `tb_sited` , `tb_statsilk` , `tb_statsilkzakaz` , `tb_textobv` , `tb_textzakaz` , `tb_upgrade` , `tb_users` ,
`who_online`, `tb_blockdin`, `tb_modul`, `tb_konkurs`, `tb_stokref`, `tb_zadaniya`, `tb_zadaniyastat`"
);

echo "<span style=\"color: #0d0\"><b>БД успешно оптимизирована</b></span>";
}
?>
<form action="" method="post">
<b>
Чтобы оптимизировать БД нажмите кнопку</b>
<input
type="submit" value="Оптимизировать">
<input
type="hidden" value="optimize" name="action">
</form>


И получаеться вписываю все таблицы что есть в базы и оптимизация идёт на все таблицы=))
А как можно сделать чтобы он оптимизировал только те таблицы которые нужные?



Спустя 2 минуты, 45 секунд (2.11.2011 - 23:31) Winston написал(а):
Цитата (VELIK505 @ 2.11.2011 - 22:28)
И получаеться вписываю все таблицы что есть в базы и оптимизация идёт на все таблицы=)

А если указать не все, а нужные таблицы ? smile.gif

Спустя 1 минута, 56 секунд (2.11.2011 - 23:33) VELIK505 написал(а):
Так я и говорю про то чтобы он в запрос цеплял только нужные таблицы. Так вот и надо как-то узнавать какие таблицы именно требуют оптимизации

Спустя 1 минута, 58 секунд (2.11.2011 - 23:35) Winston написал(а):
Хм... Сделай страничку, на которую выведи список таблиц в БД, напротив каждой, выведи чекбокс, и выбранные таблицы подставляй в запрос на оптимизацию.

Спустя 35 секунд (2.11.2011 - 23:36) alexbel2404 написал(а):
вывести список таблиц в чекбоксы) и отмечать какие оптимизировать) ничего сложного не вижу)

Спустя 4 минуты, 4 секунды (2.11.2011 - 23:40) Игорь_Vasinsky написал(а):
ну можно ещё проще

в цикле

имя таблицы -> кнопа оптимизировать -> hidden: name table

И передовать в ээтот код имя таблицы в POST

UPDATE: а ещё бы аякс подвесить... красота..

Спустя 6 секунд (2.11.2011 - 23:40) VELIK505 написал(а):
Это я понял как вывести их а как вывести какие требуют оптимизации? ну чтобы они автоматов выводились

Спустя 1 минута, 28 секунд (2.11.2011 - 23:41) Семён написал(а):
Честно говоря никогда не заморачивался с такими проверками, но помоему тебя интересует ANALYZE TABLE

Спустя 6 минут, 49 секунд (2.11.2011 - 23:48) VELIK505 написал(а):
Да я тоже не заморачивался просто надоело в pma заходить смотреть чё там оптимизировать и оптимизировать их. Охото как можно больше сделать с админки чтобы всё решалось

Спустя 57 секунд (2.11.2011 - 23:49) Игорь_Vasinsky написал(а):
а я чёт не знаю как мониторится не оптимизированное состояние состояние... по размеру времени которое затронул определённый запрос? да нет вроде..

вот нашёл что каким то запросом проверяют

Цитата
Проверка БД выдала результаты

Problems with indexes of table `cms_forum_posts`
PRIMARY and INDEX keys should not both be set for column `id`

Problems with indexes of table `cms_stats`
More than one INDEX key was created for column `ip`

Problems with indexes of table `cms_users`
PRIMARY and INDEX keys should not both be set for column `id`

Спустя 16 минут, 12 секунд (3.11.2011 - 00:05) VELIK505 написал(а):
Получаеться надо сначала промониторить таблицы не оптимизированые потом вывести их а потом по щелчку кнопки пустить запрос в них OPTIMIZE TABLE

Спустя 1 минута, 38 секунд (3.11.2011 - 00:07) Winston написал(а):
Так и надо.

Спустя 1 минута, 21 секунда (3.11.2011 - 00:08) Игорь_Vasinsky написал(а):
ну можно выводить все и мониторить в каком они состоянии
а можно выводить только требующие оптимизацию.

это как душе удобно...


 ! 

М
Спасибо Кэп!  :)
Не удержался, Семён

Спустя 52 минуты, 39 секунд (3.11.2011 - 01:01) VELIK505 написал(а):
Спасибо всем biggrin.gif

Спустя 4 минуты, 9 секунд (3.11.2011 - 01:05) Игорь_Vasinsky написал(а):
Цитата
Не удержался, Семён

это как понимать?

Спустя 54 минуты, 25 секунд (3.11.2011 - 01:59) Nikitian написал(а):
Сперва можно подумать и самим понять что стоит оптимизировать. Оптимизировать нужно те таблицы, где происходят делиты или масштабные апдейты. Только это приводит к образованию пустот и дефрагментации файлов базы.
Непосредственно по вопросу "как найти таблицы, которым необходима оптимизация":

select
TABLE_SCHEMA as "database",
TABLE_NAME as "table"
from
information_schema.`TABLES`
where
DATA_FREE>0

Получите 2 поля: база данных и таблица в ней соответственно. Их и надо оптимизировать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.