Browse Source
Fixed redundancy in sql caching system and compatibility with Galera Cluster (#5439)
Fixed redundancy in sql caching system and compatibility with Galera Cluster (#5439)
- Removed redundant 'created' column from cache and cache_shared tables - Removed use of redundant data records - Added missing primary keys (dictionary, cache, cache_shared tables)pull/5657/head

14 changed files with 225 additions and 104 deletions
-
4CHANGELOG
-
28SQL/mssql.initial.sql
-
36SQL/mssql/2016112200.sql
-
15SQL/mysql.initial.sql
-
24SQL/mysql/2016112200.sql
-
12SQL/oracle.initial.sql
-
2SQL/oracle/2016100900.sql
-
23SQL/oracle/2016112200.sql
-
11SQL/postgres.initial.sql
-
21SQL/postgres/2016112200.sql
-
12SQL/sqlite.initial.sql
-
21SQL/sqlite/2016112200.sql
-
60program/lib/Roundcube/rcube_cache.php
-
60program/lib/Roundcube/rcube_cache_shared.php
@ -0,0 +1,36 @@ |
|||
DROP TABLE [dbo].[cache] |
|||
GO |
|||
DROP TABLE [dbo].[cache_shared] |
|||
GO |
|||
|
|||
CREATE TABLE [dbo].[cache] ( |
|||
[user_id] [int] NOT NULL , |
|||
[cache_key] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , |
|||
[expires] [datetime] NULL , |
|||
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL |
|||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] |
|||
GO |
|||
CREATE TABLE [dbo].[cache_shared] ( |
|||
[cache_key] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , |
|||
[expires] [datetime] NULL , |
|||
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL |
|||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] |
|||
GO |
|||
ALTER TABLE [dbo].[cache] ADD |
|||
CONSTRAINT [DF_cache_user_id] DEFAULT ('0') FOR [user_id], |
|||
CONSTRAINT [DF_cache_cache_key] DEFAULT ('') FOR [cache_key], |
|||
GO |
|||
CREATE INDEX [IX_cache_expires] ON [dbo].[cache]([expires]) ON [PRIMARY] |
|||
GO |
|||
CREATE INDEX [IX_cache_shared_expires] ON [dbo].[cache_shared]([expires]) ON [PRIMARY] |
|||
GO |
|||
ALTER TABLE [dbo].[cache] WITH NOCHECK ADD |
|||
PRIMARY KEY CLUSTERED ( |
|||
[user_id],[cache_key] |
|||
) ON [PRIMARY] |
|||
GO |
|||
ALTER TABLE [dbo].[cache_shared] WITH NOCHECK ADD |
|||
PRIMARY KEY CLUSTERED ( |
|||
[cache_key] |
|||
) ON [PRIMARY] |
|||
GO |
@ -0,0 +1,24 @@ |
|||
ALTER TABLE `dictionary` ADD COLUMN `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; -- redundant, for compat. with Galera Cluster |
|||
|
|||
DROP TABLE `cache`; |
|||
DROP TABLE `cache_shared`; |
|||
|
|||
CREATE TABLE `cache` ( |
|||
`user_id` int(10) UNSIGNED NOT NULL, |
|||
`cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL, |
|||
`expires` datetime DEFAULT NULL, |
|||
`data` longtext NOT NULL, |
|||
PRIMARY KEY (`user_id`, `cache_key`), |
|||
CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`) |
|||
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, |
|||
INDEX `expires_index` (`expires`) |
|||
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; |
|||
|
|||
|
|||
CREATE TABLE `cache_shared` ( |
|||
`cache_key` varchar(255) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL, |
|||
`expires` datetime DEFAULT NULL, |
|||
`data` longtext NOT NULL, |
|||
PRIMARY KEY (`cache_key`), |
|||
INDEX `expires_index` (`expires`) |
|||
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; |
@ -1 +1 @@ |
|||
ALTER TABLE session MODIFY ip varchar(41) NOT NULL; |
|||
ALTER TABLE "session" MODIFY "ip" varchar(41) NOT NULL; |
@ -0,0 +1,23 @@ |
|||
DROP TABLE "cache"; |
|||
DROP TABLE "cache_shared"; |
|||
|
|||
CREATE TABLE "cache" ( |
|||
"user_id" integer NOT NULL |
|||
REFERENCES "users" ("user_id") ON DELETE CASCADE, |
|||
"cache_key" varchar(128) NOT NULL, |
|||
"expires" timestamp with time zone DEFAULT NULL, |
|||
"data" long NOT NULL, |
|||
PRIMARY KEY ("user_id", "cache_key") |
|||
); |
|||
|
|||
CREATE INDEX "cache_expires_idx" ON "cache" ("expires"); |
|||
|
|||
|
|||
CREATE TABLE "cache_shared" ( |
|||
"cache_key" varchar(255) NOT NULL, |
|||
"expires" timestamp with time zone DEFAULT NULL, |
|||
"data" long NOT NULL, |
|||
PRIMARY KEY ("cache_key") |
|||
); |
|||
|
|||
CREATE INDEX "cache_shared_expires_idx" ON "cache_shared" ("expires"); |
@ -0,0 +1,21 @@ |
|||
DROP TABLE "cache"; |
|||
DROP TABLE "cache_shared"; |
|||
|
|||
CREATE TABLE "cache" ( |
|||
user_id integer NOT NULL |
|||
REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, |
|||
cache_key varchar(128) DEFAULT '' NOT NULL, |
|||
expires timestamp with time zone DEFAULT NULL, |
|||
data text NOT NULL, |
|||
PRIMARY KEY (user_id, cache_key) |
|||
); |
|||
|
|||
CREATE INDEX cache_expires_idx ON "cache" (expires); |
|||
|
|||
CREATE TABLE "cache_shared" ( |
|||
cache_key varchar(255) NOT NULL PRIMARY KEY, |
|||
expires timestamp with time zone DEFAULT NULL, |
|||
data text NOT NULL |
|||
); |
|||
|
|||
CREATE INDEX cache_shared_expires_idx ON "cache_shared" (expires); |
@ -0,0 +1,21 @@ |
|||
DROP TABLE cache; |
|||
DROP TABLE cache_shared; |
|||
|
|||
CREATE TABLE cache ( |
|||
user_id integer NOT NULL default 0, |
|||
cache_key varchar(128) NOT NULL default '', |
|||
expires datetime DEFAULT NULL, |
|||
data text NOT NULL, |
|||
PRIMARY KEY (user_id, cache_key) |
|||
); |
|||
|
|||
CREATE INDEX ix_cache_expires ON cache(expires); |
|||
|
|||
CREATE TABLE cache_shared ( |
|||
cache_key varchar(255) NOT NULL, |
|||
expires datetime DEFAULT NULL, |
|||
data text NOT NULL, |
|||
PRIMARY KEY (cache_key) |
|||
); |
|||
|
|||
CREATE INDEX ix_cache_shared_expires ON cache_shared(expires); |
Write
Preview
Loading…
Cancel
Save
Reference in new issue