【发布时间】:2013-11-28 16:32:59
【问题描述】:
我正在尝试设计一个每 15 分钟将面临 30,000 次插入的数据库表。所以这个表将面临数百万的插入。
示例表如下-
CREATE TABLE `cdr` (`id` bigint(20) NOT NULL AUTO_INCREMENT,
`dataPacketDownLink` bigint(20) DEFAULT NULL,
`dataPacketUpLink` bigint(20) DEFAULT NULL,
`dataPlanEndTime` datetime DEFAULT NULL,
`dataPlanStartTime` datetime DEFAULT NULL,
`dataVolumeDownLink` bigint(20) DEFAULT NULL,
`dataVolumeUpLink` bigint(20) DEFAULT NULL,
`dataplan` varchar(255) DEFAULT NULL,
`dataplanType` varchar(255) DEFAULT NULL,
`createdOn` datetime DEFAULT NULL,
`deviceName` varchar(500) DEFAULT NULL,
`duration` int(11) NOT NULL,
`effectiveDuration` int(11) NOT NULL,
`hour` int(11) DEFAULT NULL,
`eventDate` datetime DEFAULT NULL,
`msisdn` bigint(20) DEFAULT NULL,
`quarter` int(11) DEFAULT NULL,
`validDays` int(11) DEFAULT NULL,
`dataLeft` bigint(20) DEFAULT NULL,
`completedOn` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `msisdn_index` (`msisdn`),
KEY `eventdate_index` (`eventDate`)
) ENGINE=MyISAM AUTO_INCREMENT=55925171 DEFAULT CHARSET=latin1;
如果使用比较 >= 在日期列的情况下(导致数百万条记录),我如何检索记录。 所以请帮我设计这样的表,这样我就可以在不影响插入操作的情况下使用优化的选择语句(很多索引在数百万条记录后创建插入问题)。 谢谢。
【问题讨论】:
-
我真的会尽量避免使用 MyISAM 引擎。如果在其中一个大型插入过程中发生了某些事情,则该表没有日志,并且最终可能会出现不可恢复的混乱。
标签: mysql database-design bulkinsert query-performance