1

我有带有“devise_token_auth”gem 的 Rails 应用程序。当访问令牌过期时,我注意到 SQL 更新非常缓慢,并且新的访问令牌保存在用户中。

我注意到用户表在更新期间被锁定,但查看 gem 代码应该不会花费太多时间。我在 users 表上有索引。应用程序中的所有其他查询都正常(快速)。

这些是此查询的详细信息:

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'

知道这里发生了什么吗?

4

0 回答 0