Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: индексы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: нужна помощь
Fobius
Отправлено: 16 Ноября, 2009 - 02:52:23
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Нояб. 2009  


Помог: 1 раз(а)




Я только недавно начал работать над сайтами и приходится вот самому разбиться. Вот сделал одну роботу, только один нюанс мне по ночам уже снится.

В таблице списков магазинов индексирую по id, вот только когда делается удаление, то получатся такой себе пропуск. Искал варианты устранения, нашёл такую штуку как REINDEX, якобы она заново отстраивает по порядку все индексы без пропусков.

Но нигде немогу найти, как ею пользоваться. Подскажите пожалуйста общюю форму использования, а то мне этот порядок индексов с пропусками после удалений не дает покоя.

Слышал, что РЕИНДЕКС когда действует, зависает сервер (не могу себе даже придумать как такое возможно). Есть ли побочьные эффекты и стоит ли ним вообще пользоваться, ведь информации мало будет поступать и врятли индекс вырастит до угрожающих размеров...

Вообщем напишите, кто что знает о реиндексе, а то в инете нету описаний.

заранее спасибо.
 
 Top
Viper
Отправлено: 16 Ноября, 2009 - 07:43:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




для id задайте int(11) NOT NULL AUTO_INCREMENT
primary key(`id`)

и вам не нужно будет заботится о индексах. тем более что такие высоконагруженные операции не стоит делать на продакшенах.

если же варианта нет то drop index, а затем add index
также если база большая или будет большой то используйте в конфиге mysql задать
delay_key_write=ALL
key_buffer_size=1000M
read_buffer_size=512M
record_buffer=512M

PS! Насколько я знаю REINDEX'а в MYSQL нет.

(Отредактировано автором: 16 Ноября, 2009 - 07:45:18)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
valenok
Отправлено: 16 Ноября, 2009 - 08:24:21
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А зачем тебе понадобилось устранять эти пробелы ?


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 16 Ноября, 2009 - 10:56:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




На практике существует проблемы с индексами и удалениями в storege-engine = InnoDB.
Связано это с тем, что при постоянных удалениях из проиндексированной таблицы появляются "дырки" - очень похоже на фрагментированность жесткого диска. И работа таблицы может существенно замедлиться.
Правда, оговорюсь, я наблюдал это на таблицах размера более 10 млн строк и то когда по ним вместе с удалениями выполнялись частые выборки (высоконагруженная система).
При этом помогает специальная команда OPTIMIZE. Она работает опять-таки только для InnoDB.
Так же примерно раз в два-три месяца выполнялся DROP/CREATE на эту таблицу и все её подобные (то есть, индексы пересоздавались заново вместе с пространством данных)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Fobius
Отправлено: 16 Ноября, 2009 - 14:53:54
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Нояб. 2009  


Помог: 1 раз(а)




Viper пишет:
для id задайте int(11) NOT NULL AUTO_INCREMENT
primary key(`id`)

да впринципи я так и делал. работает все нормально.
Это сайт сумочек и надо в базе только записать магазины в каких они продаются, тоесть записей будет относительно самое минимальное количество, потому думаю что проблем с торможением не будет.
Просто делать мне это все очень нравится, хотелось бы достичь профессионализма, потому хотелось бы даже незначительно, но сберечь скорость обработки, както мне кажется это скорее корректно, чем эфективно.
Работаю с MySQL, потомучто на хосте цПанель установлена.

Короче как я понял, лучше в мелких таблицах не рассматривать такой вопрос, как реиндекс.
Спасибо.

Еще может подскажете, как выводить данные по 3 штуки на каждой странице (пользуясь next, prev), заранее не зная количества всех элементов в таблице. LIMIT не работает с переменными и меня этот вопрос беспокоит. Или просто сделать цыкл где добавлять до индекса тройку на каждой странице? Но тогда будуть мешать те самые "дыры" в индексах при удалении элементов.
Что-то я думаю решение простое, но пока в размышлениях, не могу придумать....
 
 Top
Viper
Отправлено: 18 Ноября, 2009 - 08:34:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Fobius пишет:
LIMIT не работает с переменными и меня этот вопрос беспокоит.


в смысле не работает ?
CODE (text):
скопировать код в буфер обмена
  1. $limit = $_REQUEST['limit'];
  2. $limitstart = $_REQUEST['limitstart'];
  3. SELECT * FROM db WHERE blabla = '$bla1' LIMIT $limit, $limitstart


для LIMIT в запросе переменные не нужно брать в кавычки иначе не будет работать.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB