У меня есть приложение Rails с гемом "devise_token_auth". Я заметил очень медленное обновление SQL, когда срок действия маркера доступа истекает, и новый токен доступа сохраняется в User.
Я заметил, что таблица пользователей во время обновления заблокирована, но, глядя на код драгоценного камня, это не должно занять много времени. И у меня есть индекс в таблице пользователей. Все остальные запросы в приложении нормальные (быстрые).
Вот подробности этого запроса:
SELECT "users".* FROM "users" WHERE "users"."id" = $? LIMIT $? FOR UPDATE
Duration1,400 ms
Explain plan
Query planLimit (cost=0.29..8.31 rows=1 width=2598)
Query plan-> LockRows (cost=0.29..8.31 rows=1 width=2598)
Query plan-> Index Scan using users_pkey on users (cost=0.29..8.30 rows=1 width=2598)
Query plan Index Cond: ?
…ted-x.x.x/lib/attr_encrypted/adapters/active_record.rb: 11:in `reload'
…matapp/.rbenv/versions/x.x.x/lib/ruby/x.x.x/monitor.rb: 214:in `mon_synchronize'
…ollers/devise_token_auth/concerns/set_user_by_token.rb: 100:in `update_auth_header'
Есть идеи, что здесь происходит?