Spring OAuth2 JDBCTokenStore performance and database schema
I am using MySQL5.5 + REST (Jersey) + Spring Security + Spring OAuth2. I am currently doing performance testing and notice that
org.springframework.security.oauth2.provider.token.store.JdbcTokenStore.readAuthentication
is very slow .. especially this part of the method:
authentication = jdbcTemplate.queryForObject(selectAccessTokenAuthenticationSql,
new RowMapper<OAuth2Authentication>() {
public OAuth2Authentication mapRow(ResultSet rs, int rowNum) throws SQLException {
return deserializeAuthentication(rs.getBytes(2));
}
}, extractTokenKey(token));
To improve performance, I'm going to add a MySQL index to the following query:
private static final String DEFAULT_ACCESS_TOKEN_AUTHENTICATION_SELECT_STATEMENT = "select token_id, authentication from oauth_access_token where token_id = ?";
on token_id
, but the main problem is that regarding the official oauth2 Spring database schema like https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/ test / resources / schema.sql
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)
);
token_id
is VARCHAR(256)
also due to MySQL bugs or limitations. I cannot add this index (for example The specified MySQL key was too long ) ..
So my question is, is token_id
how mandatory VARCHAR(256)
or can I change it to VARCHAR(255)
?
source to share
No one has answered this question yet
See similar questions:
or similar: