让我们假设我对一个大小非常大的表运行了一个查询。我的缓冲池大小尽可能低。现在会发生什么?对于缓冲池中的空间不足,我是会得到一个错误,还是mysql会从磁盘中获取数据?只是好奇地想知道mysql在这个场景中的行为。
发布于 2016-05-31 07:00:36
如果MySQL正确启动,并且使用配置的缓冲池大小初始化了InnoDB,那么就没有任何错误的理由(当然,排除一些错误)。缓冲池就是一个用来缓冲IO的内存区域。当没有足够的数据保存所有活动数据时,服务器只从磁盘读取它们。
例如,如果您有100 to的表,那么许多服务器将没有足够的RAM来包含它,而且仍然可以执行运行全表扫描的查询。
在内存充足的情况下,性能将比内存差(可能实质上是1-2个数量级或更多)。
https://dba.stackexchange.com/questions/139965
复制相似问题