public class MySQLTableOptimizer
extends java.lang.Object
We will probably be able to abstract out a generic optimizer interface from this class in the future.
Constructor and Description |
---|
MySQLTableOptimizer(MySQLDiskCacheAttributes attributes,
TableState tableState,
JDBCDiskCachePoolAccess poolAccess)
This constructs an optimizer with the disk cacn properties.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
getTableName() |
protected java.lang.String |
getTableStatus(java.sql.Statement sStatement)
This calls show table status and returns the result as a String.
|
boolean |
optimizeTable()
A scheduler will call this method.
|
protected boolean |
repairTable(java.sql.Statement sStatement)
This is called if the optimizatio is in error.
|
void |
setTableName(java.lang.String tableName) |
public MySQLTableOptimizer(MySQLDiskCacheAttributes attributes, TableState tableState, JDBCDiskCachePoolAccess poolAccess)
attributes
- tableState
- We mark the table status as optimizing when this is happening.poolAccess
- access to the databasepublic boolean optimizeTable()
This restores when there is an optimization error. The error output looks like this:
mysql> optimize table JCS_STORE_FLIGHT_OPTION_ITINERARY; +---------------------------------------------+----------+----------+---------------------+ | Table | Op | Msg_type | Msg_text | +---------------------------------------------+----------+----------+---------------------+ | jcs_cache.JCS_STORE_FLIGHT_OPTION_ITINERARY | optimize | error | 2 when fixing table | | jcs_cache.JCS_STORE_FLIGHT_OPTION_ITINERARY | optimize | status | Operation failed | +---------------------------------------------+----------+----------+---------------------+ 2 rows in set (51.78 sec)A successful repair response looks like this:
mysql> REPAIR TABLE JCS_STORE_FLIGHT_OPTION_ITINERARY; +---------------------------------------------+--------+----------+----------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------------------------------------+--------+----------+----------------------------------------------+ | jcs_cache.JCS_STORE_FLIGHT_OPTION_ITINERARY | repair | error | 2 when fixing table | | jcs_cache.JCS_STORE_FLIGHT_OPTION_ITINERARY | repair | warning | Number of rows changed from 131276 to 260461 | | jcs_cache.JCS_STORE_FLIGHT_OPTION_ITINERARY | repair | status | OK | +---------------------------------------------+--------+----------+----------------------------------------------+ 3 rows in set (3 min 5.94 sec)A successful optimization looks like this:
mysql> optimize table JCS_STORE_DEFAULT; +-----------------------------+----------+----------+----------+ | Table | Op | Msg_type | Msg_text | +-----------------------------+----------+----------+----------+ | jcs_cache.JCS_STORE_DEFAULT | optimize | status | OK | +-----------------------------+----------+----------+----------+ 1 row in set (1.10 sec)
protected java.lang.String getTableStatus(java.sql.Statement sStatement) throws java.sql.SQLException
sStatement
- java.sql.SQLException
protected boolean repairTable(java.sql.Statement sStatement) throws java.sql.SQLException
It looks for "OK" in response. If it find "OK" as a message in any result set row, it returns true. Otherwise we assume that the repair failed.
sStatement
- java.sql.SQLException
public void setTableName(java.lang.String tableName)
tableName
- The tableName to set.public java.lang.String getTableName()
Copyright © 2002-2013 Apache Software Foundation. All Rights Reserved.