Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 13:15 01.07.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
Тема DELETE FROM....как се ускоряват тез заявкинови  
Автор Topбaлaн (любопитко)
Публикувано28.01.05 09:27



имам една таблица, в която се записва историята на сайта - тоест всяко кликане...
за седмица там се трупат малко над половин милион записа...

трия ги с една заявка
DELETE FROM history WHERE last_time < DATE_ADD( now( ) , INTERVAL -7 DAY )

та наскоро забелязах, че сайта се бави...ама много
и с ужас видях, че десетина такива заявки стоят в процесите на MySQL-а локнати....

заявката се изпълняваше при всяко отваряне на страница, и се трият по няколко записа...

та какво направих - заявката вече се изпълнява веднъж на денонощие...
но когато я пуснах на ръка, за да изтрия записите за последните 2 дни заявката се изпълни за 120 секунди...

това ми се вижда много...

та за това въпроса ми е има ли начин да се ускори тази заявка...
и въобще бъркам ли някъде и ако да - какво ?



Тема Re: индекси ...нови [re: Topбaлaн]  
Автор salle (един такъв)
Публикувано28.01.05 14:48



и естествено питай EXPLAIN

EXPLAIN SELECT last_time FROM history
WHERE last_time < NIOW( ) , - INTERVAL 7 DAY;

На мен този синткатсис на DATE_SUB() ми е много по разбираем



Тема Няколко въпросанови [re: Topбaлaн]  
Автор bira_more (бира)
Публикувано28.01.05 14:59



1. Ползваш ли записаните неща? Щото ако никой за нищо не ги ползва най-лесния начин за триенето им е като не се записват.

По принцип ако не се лъжа както си написал заявката на всеки ред се изчислява
DATE_ADD( now( ) , INTERVAL -7 DAY )
Не съм сигурен де ама имам някакви смътни спомени. Та вероятно ако използваш директно изчислен израз може би ще се ускори много.
Последното което ми хрумва:
1. С обикновен селект намираш ИД на първия от записите за триене.
2. След това триеш всички с ИД по малко от намереното.

Bеer? Mоre?




Тема Re: Няколко въпросанови [re: bira_more]  
Автор salle (един такъв)
Публикувано28.01.05 15:33



"По принцип ако не се лъжа както си написал заявката на всеки ред се изчислява DATE_ADD( now( ) , INTERVAL -7 DAY ) "

Грешиш този израз се изчислява само веднъж.



Тема Мерсинови [re: salle]  
Автор bira_more (бира)
Публикувано28.01.05 16:16



аз понеже ползвам предимно собствени приложения, предпочитам сам да си изчисля всичко - за това не съм много в час с подобни функции.

Имаше подобен въпрос преди време (ама подобен), та си спомням че ти там обясняваше че става изчисляване на всеки ред - за това се подведох де.

Bеer? Mоre?




Тема Re: Мерсинови [re: bira_more]  
Автор salle (един такъв)
Публикувано28.01.05 16:31



зависи от коя страна на равенството изчисляваш

... WHERE col = 1 + 2; -> изразът 1+ 2 се изчислява еднократно и при изпълнение зявката придобива вид
col = <константа>

... WHERE col - 1 = 2; -> тук изразът (col - 1) трябва да се изчисли за всяка стойност на col т.е. за всеки ред и оттам индексите не вършат работа



Тема Re: DELETE FROM....как се ускоряват тез заявкинови [re: Topбaлaн]  
Автор ro6avia (усер френдли)
Публикувано28.01.05 19:21



И още нещо ми се мотае из главата .....
при толкова много insert/delete
колко ли се фрагментира таблицата на файлово ниво ?

след такава голяма операция пускай чат-пат
optimize table ......

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy


Тема Re: Няколко въпросанови [re: bira_more]  
Автор Topбaлaн (любопитко)
Публикувано31.01.05 08:26



ползвам ги, разбира се... най-малкото за да се хваля на приятели ;-)

та каква е разликата дали ще трие всичко от дата по-малка от намерената или от ID по-малко от намереното...



Тема индекси ... има ... а смяташ ли ...нови [re: salle]  
Автор Topбaлaн (любопитко)
Публикувано31.01.05 08:58



че това как ще напиша DATE_ADD има някакво значение за бързодействието...все пак смята се един път само :-)

а ето какво връща EXPLAIN-а:


EXPLAIN SELECT last_time FROM history WHERE last_time < DATE_ADD( now( ) , INTERVAL -7 DAY ) ;

table type possible_keys key key_len ref rows Extra
history range last_time_idx last_time_idx 8 NULL 15595 Using where; Using index




Тема Re: Няколко въпроса [re: Topбaлaн]  
Автор bira_more (бира)
Публикувано31.01.05 18:16



Ами индекса ти е един INT - и сравненията са по бързи във всички случаи.

Bеer? Mоre?





Страници по тази тема: 1 | 2 | 3 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.