Оптимизация базы данных/тонкой настройки
<р>тонкая настройка параметров в базе данных, чтобы извлечь максимум из этого!
Здравствуйте ,р><р> вот некоторые из моего опыта, пока я строил поисковике и optmising базы данных PostgreSQL к Соник-скоростях!
наша конфигурация для сервера PostgreSQL был:
А Редхат 7.2
В ПИВ 2,00 ГГц система
и 1024 МБ оперативной памятир><р> одна из первых вещей, которые я заметил после включения Сервлет программы, что, хотя запросы были возвращены почти так же быстро, как с предыдущим MySQL основе системы, нагрузка на сервер была значительно выше. Тогда я начал спускаться в глубокие подробности вещей. У меня были оптимизированы MySQL ранее, значительно увеличив кэш и буфера размеры и бросали больше оперативной памяти к проблеме. Самая большая вещь, которую нужно сделать перед запуском утилиты заключается в предоставлении достаточно общего буферного пространства. Но затем, когда
на сколько хватит?
есть жаркие дебаты на нем, между людьми, которые говорят, что логически весь объем ОЗУ может быть направлено как против тех, кто говорит, что бросать больше оперативной памяти после определенного предела применения не имеет. Чем больше общий буфер кэша, тем больше процент вашей базы данных, ни причины прочитать() & #39 с, ни памяти копирование из буфера кэша операционной системы.Но в целом, вы будете кэшировать меньшее количество блоков, потому что вы будете буферизации их в два раза. Когда вы скопировать блок из буфера операционной системы с общей памятью, копия все еще в буфере операционной системы. Так что блок теперь дважды буферизованный. Один диск ввода/вывода намного дороже, чем сотни копий между буферного кэша ОС и postgres & #39 общей памяти. Также рассмотрим все другие вещи, которые вы & #39 делаем на автомате-просто мелочи, как cron и такие. Все это занимает много памяти. Поэтому, это - #39 опасно, чтобы не позволить ОС управлять хороший кусок памяти.
это происходит, что эти два противоположных факторов, можно построить и сделать несколько линий в каждой. Идеальным местом будет, куда они перешли.р><р> кроме того, я также оптимизировать SQL-запросы, подобранные специально для моей цели. Существует большой недостаток в PostgreSQL заключается в осуществлении оценки запросов с & #39 В ... #39 и & #39 & #39 . Предположим:
в запросе 1. Выбрать * из бд1, где ID в ((выберите ID из DB2, где слово = & #39 что-то #39 ) ) лимит 20
в запросе 2. Выбрать * из бд1, где ID в(1234,2345,1242,1256,1245,1567,2222,22,345,234,567,456,35,56) р><р> (где ID-это первичный ключ) и
в более поздних запросов проверяется с помощью индекса на ID, а бывший работает в последовательном сканировании. Я думаю, это называется "ошибка пилота", где базы данных выполняется подзапрос для каждой строки во внешнем запросе. Вместо этого, если мы используем явного соединения (как ниже), то мы можем заставить базу данных, чтобы использовать индекс вместо сканирования.
последний запрос :
В выберите * из данных db1, DB2 и есть, то DB2 б
где ИД = а.ID и.слово= & #39 слово1 & #39
и идентификатор = б.идентификатор и B.слово= & #39 слово2 & #39
и т. д.р><р> <ем>Примечаниеем>: Вы могли бы также столкнуться последовательного сканирования, вместо ожидаемого сканирования индекса, если количество кортежей для сканирования не более 30-40% от общего кортежей в таблице. Хотя это может быть изменено путем изменения весов, присваиваемых random_page_cost, cpu_tuple_cost, cpu_index_cost и cpu_operator_cost используется оптимизатором для изготовления этих decesions.
я тоже решила бросить больше оперативной памяти для этой цели. Я выделил 64Мб ОЗУ достижению общих буферного пространства. Файл /var/lib в/данных/данных/данных PostgreSQL.conf содержит настройки для сервера базы данных. PostgreSQL использует систему общей памяти в качестве буфера. На системе Linux, вы можете посмотреть, сколько памяти было выделено по системе, выполнив команду:
кот /труды/системы/ядра/shmmax
и для просмотра совместное использование памяти в системе:
В мпхб
и результат будет в байтах. По умолчанию в redhat 7.2 выделяет 32 МБ общей памяти, которая может быть недостаточно для PostgreSQL. Я увеличил этот лимит до 64 Мб, выполнив команду:
Эхо 67108864 > /труды/системы/ядра/shmmax и
Вы должны поместить эту строку в файле PostgreSQL с автозагрузки файл, или путем редактирования файла /etc/файл RC.г/RC.локальный файл для более постоянной настройкой.Потом в нашей с PostgreSQL.конф я shared_buffers до 8192.Я также установить наши sort_mem до 16384 (16Megs для своего рода памяти). Поскольку пул соединений был в силе, я установить max_connections до 50.
и вызов fsync также был установлен в ложь.
shared_buffers = 8192
В sort_mem = 16384
и значения max_connections=50
что вызов fsync=ложьр><р> одна неувязочка я нашел изначально заключалась в том, что система должна была построить и снести PostgreSQL в связи с каждым запросом. Это было невыносимо, поэтому я начала использовать средства пула подключений, предоставляемых смолы (http://caucho.com).
& & - в
Каринар><р> авторы : Курт , Брюс , Эндрю ет все, чтобы очистить мои сомнения!
Оптимизация базы данных/тонкой настройки
Оптимизация базы данных/тонкой настройки : Несколько тысяч советов, которые сделают вашу жизнь проще.
<р>тонкая настройка параметров в базе данных, чтобы извлечь максимум из этого!
Здравствуйте ,р><р> вот некоторые из моего опыта, пока я строил поисковике и optmising базы данных PostgreSQL к Соник-скоростях!
наша конфигурация для сервера PostgreSQL был:
А Редхат 7.2
В ПИВ 2,00 ГГц система
и 1024 МБ оперативной памятир><р> одна из первых вещей, которые я заметил после включения Сервлет программы, что, хотя запросы были возвращены почти так же быстро, как с предыдущим MySQL основе системы, нагрузка на сервер была значительно выше. Тогда я начал спускаться в глубокие подробности вещей. У меня были оптимизированы MySQL ранее, значительно увеличив кэш и буфера размеры и бросали больше оперативной памяти к проблеме. Самая большая вещь, которую нужно сделать перед запуском утилиты заключается в предоставлении достаточно общего буферного пространства. Но затем, когда
на сколько хватит?
есть жаркие дебаты на нем, между людьми, которые говорят, что логически весь объем ОЗУ может быть направлено как против тех, кто говорит, что бросать больше оперативной памяти после определенного предела применения не имеет. Чем больше общий буфер кэша, тем больше процент вашей базы данных, ни причины прочитать() & #39 с, ни памяти копирование из буфера кэша операционной системы.Но в целом, вы будете кэшировать меньшее количество блоков, потому что вы будете буферизации их в два раза. Когда вы скопировать блок из буфера операционной системы с общей памятью, копия все еще в буфере операционной системы. Так что блок теперь дважды буферизованный. Один диск ввода/вывода намного дороже, чем сотни копий между буферного кэша ОС и postgres & #39 общей памяти. Также рассмотрим все другие вещи, которые вы & #39 делаем на автомате-просто мелочи, как cron и такие. Все это занимает много памяти. Поэтому, это - #39 опасно, чтобы не позволить ОС управлять хороший кусок памяти.
это происходит, что эти два противоположных факторов, можно построить и сделать несколько линий в каждой. Идеальным местом будет, куда они перешли.р><р> кроме того, я также оптимизировать SQL-запросы, подобранные специально для моей цели. Существует большой недостаток в PostgreSQL заключается в осуществлении оценки запросов с & #39 В ... #39 и & #39 & #39 . Предположим:
в запросе 1. Выбрать * из бд1, где ID в ((выберите ID из DB2, где слово = & #39 что-то #39 ) ) лимит 20
в запросе 2. Выбрать * из бд1, где ID в(1234,2345,1242,1256,1245,1567,2222,22,345,234,567,456,35,56) р><р> (где ID-это первичный ключ) и
в более поздних запросов проверяется с помощью индекса на ID, а бывший работает в последовательном сканировании. Я думаю, это называется "ошибка пилота", где базы данных выполняется подзапрос для каждой строки во внешнем запросе. Вместо этого, если мы используем явного соединения (как ниже), то мы можем заставить базу данных, чтобы использовать индекс вместо сканирования.
последний запрос :
В выберите * из данных db1, DB2 и есть, то DB2 б
где ИД = а.ID и.слово= & #39 слово1 & #39
и идентификатор = б.идентификатор и B.слово= & #39 слово2 & #39
и т. д.р><р> <ем>Примечаниеем>: Вы могли бы также столкнуться последовательного сканирования, вместо ожидаемого сканирования индекса, если количество кортежей для сканирования не более 30-40% от общего кортежей в таблице. Хотя это может быть изменено путем изменения весов, присваиваемых random_page_cost, cpu_tuple_cost, cpu_index_cost и cpu_operator_cost используется оптимизатором для изготовления этих decesions.
я тоже решила бросить больше оперативной памяти для этой цели. Я выделил 64Мб ОЗУ достижению общих буферного пространства. Файл /var/lib в/данных/данных/данных PostgreSQL.conf содержит настройки для сервера базы данных. PostgreSQL использует систему общей памяти в качестве буфера. На системе Linux, вы можете посмотреть, сколько памяти было выделено по системе, выполнив команду:
кот /труды/системы/ядра/shmmax
и для просмотра совместное использование памяти в системе:
В мпхб
и результат будет в байтах. По умолчанию в redhat 7.2 выделяет 32 МБ общей памяти, которая может быть недостаточно для PostgreSQL. Я увеличил этот лимит до 64 Мб, выполнив команду:
Эхо 67108864 > /труды/системы/ядра/shmmax и
Вы должны поместить эту строку в файле PostgreSQL с автозагрузки файл, или путем редактирования файла /etc/файл RC.г/RC.локальный файл для более постоянной настройкой.Потом в нашей с PostgreSQL.конф я shared_buffers до 8192.Я также установить наши sort_mem до 16384 (16Megs для своего рода памяти). Поскольку пул соединений был в силе, я установить max_connections до 50.
и вызов fsync также был установлен в ложь.
shared_buffers = 8192
В sort_mem = 16384
и значения max_connections=50
что вызов fsync=ложьр><р> одна неувязочка я нашел изначально заключалась в том, что система должна была построить и снести PostgreSQL в связи с каждым запросом. Это было невыносимо, поэтому я начала использовать средства пула подключений, предоставляемых смолы (http://caucho.com).
& & - в
Каринар><р> авторы : Курт , Брюс , Эндрю ет все, чтобы очистить мои сомнения!
Оптимизация базы данных/тонкой настройки
By russiatips
Оптимизация базы данных/тонкой настройки : Несколько тысяч советов, которые сделают вашу жизнь проще.