2010-06-18 1 views
-2

в оптимизации в mysql wat - темы, которые мне нужно покрыть? Есть так много вещей в том, что .......mysql и php ... я хочу знать об оптимизации

+5

Задавая такой обобщенный вопрос, сродни заданию «как сделать код быстрее» без предоставления проблемы или какого-либо кода. Когда у вас есть примеры кода, который вы заинтересованы в оптимизации, отправьте их здесь, и вы, вероятно, узнаете больше. –

ответ

1

Сначала проанализируйте свой код/​​sql, чтобы найти медленные места.

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

1

Некоторые советы по оптимизации MySQL:

SQL_NO_CACHE

SQL_NO_CACHE подсказка выключает встроенный механизм кэширования запросов MySQL для конкретного запроса. Вы можете помочь MySQL сделать кеш запросов более эффективным, используя этот намек на очень динамичные запросы (например, поиск по ключевым словам или отчет, который работает только по ночам). Убедитесь, что кеширование запросов включено, иначе нет необходимости в этой команде.

SQL_CACHE

Если у вас есть настройки MySQL Query Кэширование в явном режиме (набор query_cache_type = 2), то вы можете использовать SQL_CACHE намек сказать MySQL, какие запросы в кэш.

HIGH_PRIORITY

HIGH_PRIORITY подсказка может быть использован на SELECT, INSERT или заявления, чтобы MySQL знать, что это высокий приоритет запрос а. Этот подсказку в основном позволит пропустить запрос в строке.

LOW_PRIORITY

LOW_PRIORITY подсказку можно использовать на INSERT и UPDATE заявления. Если вы используете ключевое слово LOW_PRIORITY, выполнение запроса задерживается до тех пор, пока другие клиенты не будут читать из таблицы. Это означает, что вы можете подождать ДОЛГОЕ время или навсегда на серверах с большим объемом чтения.

ВСТАВИТЬ ЗАДЕРЖКУ

Вкладыш LOW_PRIORITY Постулаты не вернусь, пока заявление не было выполнено, что, возможно, навсегда. Вместо этого вы можете использовать инструкцию INSERT DELAYED. Он вернется немедленно, но он все равно будет ждать, пока другие клиенты не закрыли таблицу перед выполнением инструкции.

Примечание: INSERT DELAYED работает только в таблицах MyISAM, MEMORY и ARCHIVE. STRAIGHT_JOIN

Этот совет подскажет MySQL присоединиться к таблицам в том порядке, в котором они указаны в предложении FROM.

Используйте EXPLAIN, чтобы убедиться, что MySQL еще не определил оптимальный порядок соединения. И если вы укажете плохой порядок, вы можете заставить MySQL сделать гораздо больше работы, чем нужно. SQL_BUFFER_RESULT

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

SQL_BIG_RESULT

SQL_BIG_RESULT намек может быть использован с отчетливыми и GROUP BY ЗЕЬЕСТ. Как вы, возможно, догадались, говорит MySQL, что набор результатов будет большим. Согласно документации MySQL, если вызывается

MySQL directly uses disk-based temporary tables if needed, and prefers sorting to using a temporary table with a key on the GROUP BY elements. 

SQL_SMALL_RESULT

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

+0

URL-адрес страницы mysql docs будет лучше, чем огромная копия-вставка –

+1

Мне нравится копировать и пасты, что делает вещи более удобоваримыми – Haroldo

Смежные вопросы