SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Оптимизация на база данни

retro

New member
Здравейте,


Някой занимавал ли се е с оптимизация на базата данни на компонента за Joomla - AdsManager 2.5?

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

Очевидно става дума за създаване на индекси - Queries and Indexes, за да не се бави сайта.

При липса на такива индекси, MySql-а не знае къде да търси конкретния запис и прави пълно сканиране на всички записи, което е възможно най лошия случай и води до сериозно забавяне, дори при много мощен сървър, обслужващ сайта.

Би било чудесно някой да сподели, как се прави такава оптимизация, понеже в България има доста сайтове с тоя компонент :)
 
Последно редактирано:
Re: Оптимизация на база данни

Зависи за какво е въпросната таблица(или повече), която искаш да индексираш. Някои таблици в които се записва активно се правят без индекси нарочно. Ако ли не може лесно да си ги добавиш индексите.

Ако си има индекси обаче и ти се бави може да е добре да си видиш колко памет е дадена на mysql да ползва за кеш. Индекси които не са в паметта работят много по бавно. В зависимост от базата може доста памет да е необходима, а ако си на VPS или сървър с малко памет нещата са неприятни.

И накрая ако проблема е в архитектурата на базата/проложението, трябва ти ново такова. Промените по съществуващо решение са скъпи, но ако си намериш кой да ти ги свърши са възможни.
 
Re: Оптимизация на база данни

В php.ini файла е зададена памет memory_limit = 40M

Как може да се види, дали тази памет е за цялата Joomla инсталация, или за целия акаунт изобщо? Типа на хостинг акаунта е споделен.

Отделно, как може да се провери колко памет е дадена на mysql да ползва за кеш?

Почти сигурно няма индекси, а това да се правят някакви сериозни промени по приложението/компонента е направо немислимо - никой, който ползва безплатната Joomla и безплатния компонент, няма да е особено щастлив да дава сериозни суми, за нещо, от което не печели никакви, или почти никакви пари.

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

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

А може би Joomla спеца Иво Апостолов е наясно за какво става дума :)
 
Последно редактирано:
Re: Оптимизация на база данни

Като допълнение на предния пост от @nikoladd:

- Много често проблеми със скоростта на заявките се оправят при разместване на WHERE/AND клаузите.
- В някои случаи е добре индексите да са частични.
- Ако ще се търси по няколко критерия, тогава трябва да се използват групи от двойни, тройни и т.н индекси.
 
Re: Оптимизация на база данни

Някой би ли дал конкретни примери, за да пробваме, да видим, дали нещо ще проработи, за да се подобри зареждането на заявките?

Примерно, пример за създаване на индекси, или разместване на WHERE/AND клаузите?
 
Re: Оптимизация на база данни

Не съм работил с Joomla, но ако дадеш повече информация - примерно структурата на базата. Влез в phpmyadmin и пусни тази заявка:
show variables;
Пусни тук изходните данни - това ще помогне за откриване на проблема.

Какъв обем данни има в таблиците на този компонент?
 
Re: Оптимизация на база данни

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

Горе