|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Vadim Mikhailov 2:5071/11.11 05 Feb 2005 13:09:26 To : Yuri Chumakov Subject : Re: Oracle 9i -------------------------------------------------------------------------------- Суббота Февраль 05 2005 11:58, Vladimir Kurtukov wrote to Yuri Chumakov: VK>>> главная засада у тебя будет на блокировках, YC>> А можно подробнее? В каких именно блокировках? VK> сразу select и update в одном месте происходить не могут, их VK> разделяют блокировками. myisam умеет только table locking, т.е. пока VK> идет update, все select-ы на эту таблицу ждут освобождения блокировки. VK> и наоборот. InnoDB умеет row locking, то есть ожидание будет только VK> на какой-то конкретной записи, а операция с одной записью пройдет явно VK> быстрее, соответственно и ожидания будет меньше. в последнем postgress VK> приделали какой-то еще более крутой locking... Hазывается MVCC (Multi Version Concurrency Control) - запись может иметь несколько версий. Hапример, кто-то делает SELECT. В постгресе любая операция - это транзакция. Так вот все что увидит этот SELECT будет как бы мгновенный снимок таблицы на начало этой транзакции (которая потенциально может длиться долго). В это время другие транзакции (например INSERT/UPDATE/DELETE) могут тоже что-то делать с таблицей. Если получится что другая транзакция должна изменить запись которая должна оставаться неизменной с точки зрения еще выполняющейся первой транзакции (в других базах данных это была бы блокировка и все связанные с этим проблемы), постгрес создаст ещё одну копию (версию) той же самой записи. Все последующие транзакции будут видеть только самую последнюю версию этой записи от последней завершённой транзакции. Таким образом, в постгресе блокировок как таковых нет. И это главная причина почему постгрес так хорош при многопользовательском доступе. В этой статье есть неплохое описание: http://www.onlamp.com/pub/a/onlamp/2001/05/25/postgresql_mvcc.html Ещё полезно почитать документацию: http://www.postgresql.org/docs/8.0/interactive/mvcc.html P.S. Если активность удалений/обновлений очень высокая, надо обязательно настроить autovacuum. Разработчики собираются в следующей версии (8.1?) сделать autovacuum как часть основного engine, а пока autovacuum daemon или просто ночной VACUUM ANALYZE FULL по cron очень желателен. Bye, Vadim --- Сидит дед, в 1.1.4.7 шуб одет * Origin: California (2:5071/11.11) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/323342052808.html, оценка из 5, голосов 10
|