【发布时间】:2015-03-11 14:42:16
【问题描述】:
我正在优化一个数据库,而我的学士论文几乎没有任何知识。我绝对不想让你为我做这项工作,但我有一些问题到目前为止没人能回答。
表结构:
data_inc, CREATE TABLE 'data_inc' (
'id' bigint(20) NOT NULL AUTO_INCREMENT,
'id_para' int(10) unsigned NOT NULL DEFAULT '0',
't_s' int(11) unsigned NOT NULL DEFAULT '0',
't_ms' smallint(6) unsigned NOT NULL DEFAULT '0',
't_ns' bigint(20) unsigned NOT NULL DEFAULT '0',
'id_inst' smallint(6) NOT NULL DEFAULT '1',
'value' varchar(255) NOT NULL DEFAULT '',
'isanchor' tinyint(4) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY ('id','t_ns'),
KEY 't_s' ('t_s'),
KEY 't_ns' ('t_ns')
) ENGINE=MyISAM AUTO_INCREMENT=2128295174 DEFAULT CHARSET=latin1
/*
!50100 PARTITION BY RANGE (t_ns)
(PARTITION 19_02_2015_23_59 VALUES LESS THAN (1424386799000000000) ENGINE = MyISAM,
PARTITION 20_02_2015_23_59 VALUES LESS THAN (1424473199000000000) ENGINE = MyISAM,
PARTITION 21_02_2015_23_59 VALUES LESS THAN (1424559599000000000) ENGINE = MyISAM,
PARTITION 22_02_2015_23_59 VALUES LESS THAN (1424645999000000000) ENGINE = MyISAM,
PARTITION 23_02_2015_23_59 VALUES LESS THAN (1424732399000000000) ENGINE = MyISAM,
PARTITION 24_02_2015_23_59 VALUES LESS THAN (1424818799000000000) ENGINE = MyISAM,
PARTITION 25_02_2015_23_59 VALUES LESS THAN (1424905199000000000) ENGINE = MyISAM,
PARTITION 05_03_2015_23_59 VALUES LESS THAN (1425596399000000000) ENGINE = MyISAM,
PARTITION 13_03_2015_23_59 VALUES LESS THAN (1426287599000000000) ENGINE = MyISAM,
PARTITION 14_03_2015_23_59 VALUES LESS THAN (1426373999000000000) ENGINE = MyISAM,
PARTITION 15_03_2015_23_59 VALUES LESS THAN (1426460399000000000) ENGINE = MyISAM,
PARTITION 16_03_2015_23_59 VALUES LESS THAN (1426546799000000000) ENGINE = MyISAM,
PARTITION 17_03_2015_23_59 VALUES LESS THAN (1426633199000000000) ENGINE = MyISAM,
PARTITION 18_03_2015_23_59 VALUES LESS THAN (1426719599000000000) ENGINE = MyISAM)
*/
系统当前每秒最多将 4000 个参数记录到数据库中(不同的表,在存储过程中决定哪个表)。每 5 分钟、1 小时和每天调用不同的脚本来分析日志数据,在此期间数据被写入表中。这导致现在有些沉重的负载。从 MyISAM 切换到 InnoDB(或其他)是否有可能提高性能?
感谢您的帮助!
【问题讨论】:
-
这一切都取决于数据的结构、您需要如何使用它以及您拥有的索引类型。我们需要更多信息。
-
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow[...].除此之外,如果您只是插入和读取,但不更新数据,这通常用于记录数据,那么您不需要事务,您可以使用 MyISAM理论上更快,因为它不关心该功能。 -
无法用更多细节来回答这个问题,但是......一般来说,myisam 会比 innodb 更快,因为它是一个“有限”的引擎。没有外键,这消除了很多开销。另一方面,innodb 支持行级锁,而 myisam 只有表锁。
-
@BenM 我添加了更多信息,您还想知道什么?我很乐意提供任何信息,但我真的不知道你必须知道什么才能做出决定
标签: mysql logging innodb myisam