这是我在mysql中的表结构
CREATE TABLE `p_camat` (
`cid` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL,
`col1` int(5) NOT NULL,
`col2` int(5) NOT NULL,
`col3` int(5) NOT NULL,
`col4` int(5) NOT NULL,
`col5` int(5) NOT NULL,
`col6` int(5) NOT NULL,
`col7` int(5) NOT NULL,
`col8` int(5) NOT NULL,
`row_no` int(11) NOT NULL,
`col_no` int(11) NOT NULL,
`mat_dim` int(11) DEFAULT '64',
PRIMARY KEY (`cid`),
KEY `pid` (`pid`),
CONSTRAINT `p_camat_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `p_protein` (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=2513419 DEFAULT CHARSET=latin1;
正如你们所看到的,那里已经有2,513,419个数据行,而且还会有500万到1000万个。当前的数据库引擎也是InnoDB。
那么如何计算这个表的大小(比如它是否有5M / 10M行)?我读了一些文档,但没有一个是明确的。
另外,mysql上的哪个引擎最好(myisam / innodb),因为它有85%的读数和15%更新(之后没有插入)?
注意:除了fk之外没有其他索引。如果它用于此目的,我可以使用no-sql或其他数据库。
答案 0 :(得分:0)
那么如何计算该表的大小(如果它有5M / 10M行)?
Data Type Storage Requirements记录了每种类型值所需的存储量。在您的情况下,您的所有列都是INT
(每个值占用4个字节),并且您有13个 - 因此每个表记录将占用13 * 4 = 52个字节。你可以相应地增加它。
显然,这两个索引也会占用一些空间,但所需的空间量将取决于存储引擎和存储的值。
您还可以查询INFORMATION_SCHEMA
的平均行大小,该大小应为52个字节,因为在这种情况下,所有行的大小必须相同:
SELECT AVG_ROW_LENGTH
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'p_camat'
你甚至可以检查INDEX_LENGTH
,并且,为了近似,尝试推断更大的表格大小。
另外,mysql上的哪个引擎最好(myisam / innodb),因为它有85%的读数和15%更新(之后没有插入)?
这取决于您的要求:请参阅MyISAM versus InnoDB。