mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-30 10:33:54 -07:00
Improve Database Backup Speed (#5400)
* Support better indexes for Servatrice - Prevent searching only on msg for logs
This commit is contained in:
parent
6e1047032d
commit
99eea3a662
4 changed files with 26 additions and 6 deletions
11
servatrice/migrations/servatrice_0030_to_0031.sql
Normal file
11
servatrice/migrations/servatrice_0030_to_0031.sql
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
-- Servatrice db migration from version 30 to version 31
|
||||||
|
|
||||||
|
ALTER TABLE cockatrice_log DROP INDEX `target_type`;
|
||||||
|
|
||||||
|
ALTER TABLE cockatrice_forgot_password ADD INDEX idx_emailed (`emailed`);
|
||||||
|
ALTER TABLE cockatrice_sessions ADD INDEX idx_start_time (`start_time`);
|
||||||
|
ALTER TABLE cockatrice_users ADD INDEX idx_admin (`admin`);
|
||||||
|
ALTER TABLE cockatrice_users ADD INDEX idx_active (`active`);
|
||||||
|
ALTER TABLE cockatrice_users ADD INDEX idx_privlevel (`privlevel`);
|
||||||
|
|
||||||
|
UPDATE cockatrice_schema_version SET version=31 WHERE version=30;
|
||||||
|
|
@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `cockatrice_schema_version` (
|
||||||
PRIMARY KEY (`version`)
|
PRIMARY KEY (`version`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
INSERT INTO cockatrice_schema_version VALUES(30);
|
INSERT INTO cockatrice_schema_version VALUES(31);
|
||||||
|
|
||||||
-- users and user data tables
|
-- users and user data tables
|
||||||
CREATE TABLE IF NOT EXISTS `cockatrice_users` (
|
CREATE TABLE IF NOT EXISTS `cockatrice_users` (
|
||||||
|
|
@ -44,7 +44,10 @@ CREATE TABLE IF NOT EXISTS `cockatrice_users` (
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `name` (`name`),
|
UNIQUE KEY `name` (`name`),
|
||||||
KEY `token` (`token`),
|
KEY `token` (`token`),
|
||||||
KEY `email` (`email`)
|
KEY `email` (`email`),
|
||||||
|
INDEX `idx_admin` (`admin`),
|
||||||
|
INDEX `idx_active` (`active`),
|
||||||
|
INDEX `idx_privlevel` (`privlevel`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `cockatrice_decklist_files` (
|
CREATE TABLE IF NOT EXISTS `cockatrice_decklist_files` (
|
||||||
|
|
@ -190,7 +193,8 @@ CREATE TABLE IF NOT EXISTS `cockatrice_sessions` (
|
||||||
`clientid` varchar(15) NOT NULL,
|
`clientid` varchar(15) NOT NULL,
|
||||||
`connection_type` ENUM('tcp', 'websocket'),
|
`connection_type` ENUM('tcp', 'websocket'),
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `username` (`user_name`)
|
KEY `username` (`user_name`),
|
||||||
|
INDEX `idx_start_time` (`start_time`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
-- server moderation
|
-- server moderation
|
||||||
|
|
@ -230,7 +234,6 @@ CREATE TABLE IF NOT EXISTS `cockatrice_log` (
|
||||||
`target_name` varchar(50) NOT NULL,
|
`target_name` varchar(50) NOT NULL,
|
||||||
KEY `sender_name` (`sender_name`),
|
KEY `sender_name` (`sender_name`),
|
||||||
KEY `sender_ip` (`sender_ip`),
|
KEY `sender_ip` (`sender_ip`),
|
||||||
KEY `target_type` (`target_type`),
|
|
||||||
KEY `target_id` (`target_id`),
|
KEY `target_id` (`target_id`),
|
||||||
KEY `target_name` (`target_name`),
|
KEY `target_name` (`target_name`),
|
||||||
FOREIGN KEY(`sender_id`) REFERENCES `cockatrice_users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY(`sender_id`) REFERENCES `cockatrice_users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
|
@ -269,7 +272,8 @@ CREATE TABLE IF NOT EXISTS `cockatrice_forgot_password` (
|
||||||
`requestDate` datetime NOT NULL default '0000-00-00 00:00:00',
|
`requestDate` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
`emailed` tinyint(1) NOT NULL default 0,
|
`emailed` tinyint(1) NOT NULL default 0,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `user_name` (`name`)
|
KEY `user_name` (`name`),
|
||||||
|
INDEX `idx_emailed` (`emailed`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `cockatrice_audit` (
|
CREATE TABLE IF NOT EXISTS `cockatrice_audit` (
|
||||||
|
|
|
||||||
|
|
@ -1210,6 +1210,11 @@ QList<ServerInfo_ChatMessage> Servatrice_DatabaseInterface::getMessageLogHistory
|
||||||
if (!checkSql())
|
if (!checkSql())
|
||||||
return results;
|
return results;
|
||||||
|
|
||||||
|
if (user.isEmpty() && ipaddress.isEmpty() && gameid.isEmpty() && gamename.isEmpty()) {
|
||||||
|
// To ensure quick results and minimal lag, require an indexed field
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
// BUILD QUERY STRING BASED ON PASSED IN VALUES
|
// BUILD QUERY STRING BASED ON PASSED IN VALUES
|
||||||
QString queryString = "SELECT * FROM {prefix}_log WHERE `sender_ip` IS NOT NULL";
|
QString queryString = "SELECT * FROM {prefix}_log WHERE `sender_ip` IS NOT NULL";
|
||||||
if (!user.isEmpty())
|
if (!user.isEmpty())
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSqlDatabase>
|
#include <QSqlDatabase>
|
||||||
|
|
||||||
#define DATABASE_SCHEMA_VERSION 30
|
#define DATABASE_SCHEMA_VERSION 31
|
||||||
|
|
||||||
class Servatrice;
|
class Servatrice;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue