首先,我想知道如何估计它将包含的最大表的数据库大小.我有以下几点:
+----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| users_id | int(32) unsigned | NO | MUL | NULL | |
| s | binary(16) | NO | PRI | NULL | |
| t | binary(16) | NO | PRI | NULL | |
| x | binary(16) | NO | PRI | NULL | |
+----------+------------------+------+-----+---------+-------+
这是对大小有意义的表(另一个表只是为了维护用户数据(id,user,pass,email),我不指望它们有超过100个条目).
我希望上表中大约有7.61263 * 10 ^ 9个条目.我做了这个简单的计算:7.61263 * 10 ^ 9(4字节16字节16字节16字节)〜= 395 GB.但我不知道如何考虑来自dbms(索引,数据库结构……)的开销?
如何估算数据库大小?
那个运行这个大表的MySQL的速度和稳定性怎么样?我是否必须将数据拆分到两个或更多数据库以减小大小?
解决方法:
至于你对尺寸和速度的询问,是的,罗素是对的.您将不得不执行fill a table with sample data,并测试代表性查询以查看它们的执行情况.
对于大小问题,您无法始终计算索引的确切大小,但请参阅Data Type Storage Requirements的MySQL文档和storage engine you’re using.的相应文档,以获取有关行开销的信息以及估计索引的一些指导.
(例如,你将在MyISAM中对行进行2 ** 32限制,因此你必须使用big tables support进行构建)
至于你是否需要多个数据库 – 你不应该.如果你需要将它分散到多个表中,你总是可以使用partitioning,我认为如果你在file system limits上升,我也应该提供帮助.
标签:mysql,database-design,datatypes
来源: https://codeday.me/bug/20190806/1601020.html