optimize dist-lock table layout

This commit is contained in:
Mengyi Zhou 2015-12-11 13:46:23 +08:00
parent 4c012ce915
commit 2d1013792e
2 changed files with 21 additions and 17 deletions

View file

@ -616,13 +616,15 @@
</query-defs>
</entity>
<entity name="dist-lock" table="dist_lock" alias="dl">
<member name="lock-key" field="lock_key" value-type="String" length="255" nullable="false" key="true" />
<member name="id" field="id" value-type="long" length="19" nullable="false" key="true" auto-increment="true" />
<member name="lock-key" field="lock_key" value-type="String" length="255" nullable="false" />
<member name="owner" field="owner" value-type="long" length="19" />
<member name="server" field="server" value-type="String" length="50" />
<member name="created-time" field="created_time" value-type="long" length="19" />
<member name="data-change-last-time" field="DataChange_LastTime" value-type="Date" nullable="false" />
<var name="key-lock-key" value-type="String" key-member="lock-key" />
<primary-key name="PRIMARY" members="lock_key" />
<var name="key-id" value-type="long" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="lock_key" unique="true" members="lock_key ASC" />
<index name="idx_DataChange_LastTime" members="DataChange_LastTime ASC" />
<readsets>
<readset name="FULL" all="true" />
@ -632,25 +634,25 @@
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-lock-key" />
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='lock-key'/> = ${key-lock-key}]]></statement>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-lock-key" />
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='lock-key'/> = ${key-lock-key}]]></statement>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-lock-key" />
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='lock-key'/> = ${key-lock-key}]]></statement>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>

View file

@ -254,14 +254,16 @@ CREATE TABLE IF NOT EXISTS `conf_slb_active` (
-- Dumping structure for table dist_lock
DROP TABLE IF EXISTS `dist_lock`;
CREATE TABLE IF NOT EXISTS `dist_lock` (
`lock_key` varchar(255) NOT NULL DEFAULT 'UNKNOWN' COMMENT 'lock key',
`owner` bigint(20) DEFAULT '0' COMMENT 'thread id',
`server` varchar(50) DEFAULT '0' COMMENT 'server ip',
`created_time` bigint(20) DEFAULT NULL COMMENT 'create time',
`DataChange_LastTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
PRIMARY KEY (`lock_key`),
KEY `idx_DataChange_LastTime` (`DataChange_LastTime`)
CREATE TABLE `dist_lock` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
`lock_key` VARCHAR(255) NOT NULL DEFAULT 'UNKNOWN' COMMENT 'lock key',
`owner` BIGINT(20) NULL DEFAULT '0' COMMENT 'thread id',
`server` VARCHAR(50) NULL DEFAULT '0' COMMENT 'server ip',
`created_time` BIGINT(20) NULL DEFAULT NULL COMMENT 'create time',
`DataChange_LastTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
PRIMARY KEY (`id`),
UNIQUE INDEX `lock_key` (`lock_key`),
INDEX `idx_DataChange_LastTime` (`DataChange_LastTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='distribution lock';
-- Data exporting was unselected.