Лучшие практики оптимизации базы данных MySQL

В соответствии с вашими этапами воспроизведения я предположил, что изменение пути вывода в свойстве приложения было вашим единственным изменением после создания приложения. Единственное, что делает это изменение, - это то, что он сообщает Visual Studio о переносе выходных сборок MSBuild в новую папку. Однако во время выполнения ASP.Net не имеет представления, что он должен загружать сборки из этой новой папки вместо папки \ bin.

Этот ответ показывает способ изменения выходного каталога сборки приложения WebApi. Чтобы получить ту же самую ошибку, обнаруженную в этом сообщении, вам нужно прокомментировать весь файл & lt; system.codedom & gt; в web.config. И затем вы можете следовать инструкциям по изменению выходного пути.

После того, как вы приступите к работе вашего приложения, вы можете разоблачить & lt; system.codedom & gt; раздел. Если вы не используете новый синтаксис C # 6 в своем приложении, вы можете удалить из приложения приложение Microsoft.CodeDom.Providers.DotNetCompilerPlatform; в противном случае вы можете добавить следующую следующую команду в событие post-build,

xcopy /Q /Y "$(TargetDir)roslyn\*.*" "$(TargetDir)..\roslyn\"

. Новый поставщик CodeDom всегда ищет папку \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \. Вышеупомянутая команда работает как обходной путь и копирует папку\roslyn из вашей новой выходной папки в \ bin.

В моих экспериментах инструмент публикации Visual Studio, однако, опубликовал выходные сборки в папке \ bin в месте развертывания независимо от моего пути выходного пути. Я предполагаю, что ваше приложение все равно должно работать над фактическим развертыванием.

15
задан Vordreller 9 March 2009 в 19:06
поделиться

4 ответа

"Лучшая практика":

  1. Измеряют уровень, изолируя соответствующую подсистему, а также Вы можете.
  2. Определяют первопричину узкого места. Вы - связанный ввод-вывод? Зависящий от ЦП? Память связывается? Ожидание на блокировках?
  3. Вносят изменения для облегчения первопричины, которую Вы обнаружили.
  4. Мера снова, чтобы продемонстрировать, что Вы зафиксировали узкое место и сколько .
  5. Переходят к шагу 2 и повторяются по мере необходимости, пока система не работает достаточно быстро.

Подписываются на канал RSS в http://www.mysqlperformanceblog.com и читают его исторические статьи также. Это - чрезвычайно полезный ресурс для связанной с производительностью мудрости. Например, Вы спросили о InnoDB по сравнению с MyISAM. Их заключение: InnoDB имеет на ~30% более высокую производительность, чем MyISAM в среднем. Хотя существует также несколько сценариев использования, где MyISAM превосходит InnoDB по характеристикам.

авторы того блога являются также соавторами "Высокопроизводительного MySQL", книга, упомянутая @Andrew Barnett.

<час>

комментарий Ре от @КћЙ” Д±u: То, как сказать, являетесь ли Вы вводом-выводом, связанным по сравнению с Зависящим от ЦП по сравнению со связанной памятью, зависимо от платформы. Операционная система может предложить инструменты, такие как PS, iostat, vmstat, или вершина. Или Вам, вероятно, придется получить стороннюю программу, если Ваша ОС не обеспечивает тот.

В основном, какой бы ни ресурс привязан при 100%-м использовании/насыщенности, вероятно, будет Ваше узкое место. Если Ваша загрузка ЦП является низкой, но Ваша загрузка ввода-вывода в ее максимуме для Ваших аппаратных средств, то Вы - связанный ввод-вывод.

Это - всего одна точка данных, как бы то ни было. Средство может также зависеть от других факторов. Например, сложный SQL-запрос может делать filesort, и это заставляет ввод-вывод напряженно трудиться. Необходимо ли бросить больше/быстрее аппаратные средства в него, или необходимо ли перепроектировать запрос для предотвращения filesort?

существует слишком много факторов для суммирования в сообщении StackOverflow, и то, что много книг существуют на предмете, поддерживает это. Хранение баз данных, работающих эффективно и использующих лучше всего ресурсы, является работой на полную ставку, требующей специализированных навыков и постоянного исследования.

<час>

Jeff Atwood просто написал хорошую статью блога о нахождении узких мест в системе:

16
ответ дан 1 December 2019 в 01:53
поделиться

Пойдите покупают "Высокопроизводительный MySQL" от O'Reilly. Это - почти 700 страниц по теме, таким образом, я сомневаюсь, что Вы найдете сжатый ответ на ТАК.

7
ответ дан 1 December 2019 в 01:53
поделиться

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

  • необходимо оценить read:write отношения. Для таблиц с отношениями ниже, чем о 5:1, Вы, вероятно, извлечете выгоду из InnoDB, потому что затем вставки не заблокируются, выбирает. Но если Вы не используете транзакции, необходимо измениться innodb_flush_log_at_trx_commit на 1 для возвращения производительности по MyISAM.
  • Взгляд на параметры памяти. Значения по умолчанию MySQL очень консервативны, и некоторые пределы памяти могут быть повышены фактором 10 или больше даже на обычных аппаратных средствах. Это принесет пользу Вашим ВЫБОРАМ, а не ВСТАВЛЯЕТ.
  • MySQL может зарегистрироваться, вещам нравятся запросы, которые не используют индексы, а также запросы, которые просто берут слишком длинный (пользователь-defineable).
  • кэш запроса может быть полезным, но необходимо оснастить его (т.е. видеть, насколько он используется). Кактусы могут сделать это; как может Munin.
  • Проектирование приложений также важно:
    • Слегка кэширование часто выбираемых, но небольших наборов данных будет иметь большую разницу (т.е. время жизни кэша нескольких секунд).
    • не повторно выбирают данные, которые уже необходимо вручить.
    • Многоступенчатое устройство хранения данных может помочь с большим объемом вставок в таблицы, которые также деловито читаются. Основная идея состоит в том, что у Вас может быть таблица для специальных вставок (INSERT DELAYED, может также быть полезным), но пакетная обработка для перемещения обновлений в MySQL оттуда туда, где все чтения происходят. Существуют изменения этого.
  • не забывают, что перспектива и контекст важны, также: то, что Вы могли бы думать, является долгим временем для UPDATE для случая, могло бы на самом деле быть довольно тривиальным, если то "долгое" обновление только происходит один раз в день.
5
ответ дан 1 December 2019 в 01:53
поделиться

Существует масса передовых практик, которые уже обсуждались ранее, поэтому нет причин их повторять. Чтобы получить конкретный совет о том, что делать, я бы попробовал запустить MySQL Tuner . Это сценарий perl, который вы можете загрузить, а затем запустить на сервере базы данных, он предоставит вам кучу статистических данных о том, как работает ваша база данных (например, попадания в кеш), а также некоторые конкретные рекомендации по поводу того, какие проблемы или параметры конфигурации необходимо настроить для повышения производительности.

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

4
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: