[Ludia-users 246] AccessExclusiveLockが獲得され、deadlockが発生します

Zurück zum Archiv-Index

株式会社エーツー システム部 加藤 株式会社エーツー システム部 加藤
2009年 11月 13日 (金) 15:49:22 JST


加藤と申します。お世話になります。
この度は、ご報告と、できれば解決案のご提示をいただきたいと思い、MLに参加させていただきました。

PostgreSQL 8.1.11 の環境で、ludia 1.5.2 Senna1.1.4を利用させていただいております。
検索対象としたいカラムにはfulltextbのindexを作成しています。

現在、このfulltextbのindexを作成しているカラムが存在するテーブルに対して、更新のクエリを送信すると、deadlockが発生してしまう状態です。
原因は、更新クエリの際に獲得されるAccessExclusiveLockと、検索の際に獲得されるAccessShareLockの競合です。
このfulltextbのindexを作成しているカラムは、検索される頻度も高いカラムです。

AccessExclusiveLockが獲得されてしまう理由については、調査していただいた結果、fulltext、fulltextb、fulltextuのindexタイプでは、pg_amのamconcurrentフラグがfalseになっているためだとわかりました。
amconcurrentフラグについては、以下のような説明が書いてあります。
http://www.postgresql.jp/document/pg811doc/html/index-locking.html
>amconcurrentが偽の場合でもPostgreSQLはインデックススキャン中にAccessShareLockを獲得しますが、更新時にはAccessExclusiveLockを獲得します。

このように、AccessExclusiveLockが獲得されてしまう状況では、deadlockに陥ってしまうことと、更新のクエリが終わるのを検索のクエリが待ってしまうため、プロセスが溜まってデータベースに負荷がかかってしまうことが問題です。
この問題について、Ludia側でのご対応は期待できますでしょうか?
よろしくお願いいたします。


-- 
************************************************
 加藤  豊
    yutak****@a-too*****
   株式会社エーツー システム部
   〒422-8064 静岡県静岡市駿河区丸子新田317-1
   TEL 054-268-3013 / FAX 054-268-3014
************************************************




Ludia-users メーリングリストの案内
Zurück zum Archiv-Index