MySQL 数据库到底能支撑多少个表?
原则上来说应该是无限的, 但是又收到了操作系统某些参数的限制. 内存大小的限制.
根据 mysql 5.7 的文档, 里面提到了一点 :
System Variable | Name | table_open_cache | |
Variable Scope | Global | ||
Dynamic Variable | Yes | ||
Permitted Values (<= 5.6.7) | Type | integer | |
Default | 400 | ||
Min Value | 1 | ||
Max Value | 524288 | ||
Permitted Values (>= 5.6.8) | Type | integer | |
Default | 2000 | ||
Min Value | 1 | ||
Max Value | 524288 |
这个参数 数据库能够打开的表的最大数目, 考虑到2,8 原则, 那么假设所有的这些cache 都是热表, 那么就是再 * 5 倍 大约 26万个表.
实际情况呢:
我们再一个项目中,设计的时候,开了 20000个表, 32G 内存 8 core * 2 cpu 8*300g sas 硬盘 的硬件 .
在测试的时候就已经无法忍受了, 启动数据库超慢, 一个show table status 就要等几分钟, 这还是没有压力的情况下.
已经无法投产了, 最后重新评估,各种修改 , 然后设置了4000多个表. 各种问题就没有了.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-1777482/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/133735/viewspace-1777482/