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 :: Оптимальное использование MySQL

 PHP.SU

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


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

> Описание: оптимизация, большие нагрузки
Vaio
Отправлено: 23 Мая, 2013 - 20:19:27
Post Id


Гость


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


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




Уважаемые пользователи, поделитесь, пожалуйста, опытом работы с MySQL. Как оптимизировать ее работу, чтобы чтобы были максимально возможные маленькие затраты ресурсов и времени?

Говорят, что использовать JOIN плохо, а что тогда лучше n-раз сделать SELECT?
Говорят, нужно использовать индексы. Если у меня нет запросов с LIKE, они мне нужны? Если нужны то подскажите где можно доступно почитать об этом с примерами использования.
Что лучше использовать MyISAM или InnoDB? Настолько я понял MyISAM быстрее для малых таблиц, когда требуется выборка через SELECT, а InnoDB для больших таблиц и для JOIN. Тогда можно например для таблицы users (~ 200 записей) использовать MyISAM, а для таблицы logs (~ 10000 записей) InnoDB, или лучше что-то одно?

Также еще ​​нашел вот такую ​​статью, стоит прислушиваться к этим советам?
 
 Top
Мелкий Супермодератор
Отправлено: 23 Мая, 2013 - 20:50:25
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Vaio пишет:
Говорят, что использовать JOIN плохо

Так говорят те, кто СУБД пользоваться и не умеет.

Vaio пишет:
Если у меня нет запросов с LIKE, они мне нужны?

like к индексам отношения как раз не имеет, кроме как при like 'константа%' или like 'константа' использоваться индекс не может.
Индексы, безусловно, нужны. Для тех полей, по которым происходит выборка данных.

Vaio пишет:
Что лучше использовать MyISAM или InnoDB?

innoDB, из-за транзакционности.

Очень рекомендую книжку "MySQL. Оптимизация производительности" (Б.Шварц), если интересна тема.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 23 Мая, 2013 - 20:54:02
Post Id


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


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


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




Vaio пишет:
Говорят, что использовать JOIN плохо, а что тогда лучше n-раз сделать SELECT?

Если JOIN идёт, к примеру, по внешнему ключу - то чем же это плохо? Напротив, это будет выгоднее двух запросов, поскольку сэкономит накладные расходы. Дело другое, если подобный JOIN делается по условию, при котором СУБД придётся создавать временные таблицы и т.п. (проще говоря - почти при любом неиндексированном объединении)
Vaio пишет:
Что лучше использовать MyISAM или InnoDB?

Почитайте мануал. InnoDB поддерживает намного больше опций - транзакционность, триггеры, внешние ключи и т.п. - а MyISAM может обслуживать полнотекстовые индексы. Правда, в MySQL >=5.6 InnoDB и полнотекстовые индексы поддерживает.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vanicon
Отправлено: 23 Мая, 2013 - 21:12:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




Добавлю ко всему выше сказанному, что еще одно основное отличие innoDB от MyISAM в том, что если к таблице будут параллельно поступать запросы, то MyISAM будет блокировать таблицу при каждом обращении, и понятно что о параллельном доступе к таблице нет и речи, тогда как innoDB не всегда блокирует таблицу.
А на счет Joina то тут да 1 запрос сразу лучше чем 2 идущих подряд.
Но злоупотреблять joinom не стоит, если можно обойтись без связей таблиц то лучше их не связывать...


-----
Так было, так есть и так будет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB