Mysql Spring OAuth2 JDBCTokenStore性能和数据库模式

Mysql Spring OAuth2 JDBCTokenStore性能和数据库模式,mysql,spring,spring-security,oauth-2.0,spring-security-oauth2,Mysql,Spring,Spring Security,Oauth 2.0,Spring Security Oauth2,我使用MySQL5.5+REST(Jersey)+springsecurity+springoauth2。现在我正在进行性能测试,并注意到 org.springframework.security.oauth2.provider.token.store.JdbcTokenStore.readAuthentication方法运行速度非常慢。。特别是该方法的这一部分: authentication = jdbcTemplate.queryForObject(selectAccessTokenAuth

我使用MySQL5.5+REST(Jersey)+springsecurity+springoauth2。现在我正在进行性能测试,并注意到

org.springframework.security.oauth2.provider.token.store.JdbcTokenStore.readAuthentication
方法运行速度非常慢。。特别是该方法的这一部分:

authentication = jdbcTemplate.queryForObject(selectAccessTokenAuthenticationSql,
                    new RowMapper<OAuth2Authentication>() {
                        public OAuth2Authentication mapRow(ResultSet rs, int rowNum) throws SQLException {
                            return deserializeAuthentication(rs.getBytes(2));
                        }
                    }, extractTokenKey(token));
token\u id
字段上,但主要问题是关于官方oauth2 Spring数据库模式,例如

token\u id
VARCHAR(256)
,由于MySQL的错误或限制,我无法添加此索引(例如)


因此,我的问题是-是否必须将
token\u id
设置为
VARCHAR(256)
,或者我可以将其更改为
VARCHAR(255)

检查该列的内容并查看其中的内容。我仍然认为它的大小应该是2的幂,因为其中存储了字节表示。此外,我还发现了另一个oauth db方案,它使用VARCHAR(255)-您尝试过了吗,但没有成功?令牌值格式取决于您的实现,因此无法概括地说。不过默认的令牌是UUID,所以我认为它们可以容纳255个字符。是的,我在令牌上添加了PK,它可以工作,但不幸的是它降低了性能。您是否以某种方式解决了oauth2 jdbc的性能问题?谢谢
private static final String DEFAULT_ACCESS_TOKEN_AUTHENTICATION_SELECT_STATEMENT = "select token_id, authentication from oauth_access_token where token_id = ?";
create table oauth_access_token (
  token_id VARCHAR(256),
  token LONGVARBINARY,
  authentication_id VARCHAR(256) PRIMARY KEY,
  user_name VARCHAR(256),
  client_id VARCHAR(256),
  authentication LONGVARBINARY,
  refresh_token VARCHAR(256)
);