TL;DR:通过schema.table
表缓存引用的表是否保留?
我有大量客户端数据库,我们的应用程序基于 http 请求连接到这些数据库。这些用于应用程序的每个部分,除了访问日志记录。我们使用第二个中央模式来记录跨应用程序所有实例的登录尝试。
但是,登录表是通过与本地模式的连接作为外部表访问的。例如:
UPDATE central_schema.login SET column = 'value';
Run Code Online (Sandbox Code Playgroud)
而不是直接使用第二个连接到中央模式并仅login
作为本地表处理:
UPDATE login SET column = 'value';
Run Code Online (Sandbox Code Playgroud)
或者切换模式:
USE central_schema;
UPDATE login SET column = 'value';
USE client_schema;
Run Code Online (Sandbox Code Playgroud)
鉴于在繁忙时期,我看到很多简单的更新或选择查询等待表关闭,当引用跨模式时,MySQL 是否可能不缓存表?是否有可能因为它连接到client_schema
,它想要使用客户端架构缓存,因此无法正确缓存外部表?
而且,如果我不能得到一个明确的答案,我将如何开始测试缓存中的内容和不包含的内容?
让我们看看您是否有以下问题table_open_cache
:
SHOW VARIABLES LIKE 'table%cache';
SHOW GLOBAL STATUS LIKE '%open%';
SHOW GLOBAL STATUS LIKE 'Up%';
Run Code Online (Sandbox Code Playgroud)
您的系统中有多少张表(不仅仅是一个数据库)?
FOREIGN_KEYs
需要访问“其他”表的索引。这通常是FK 的成本损失。然而,所有此类访问都缓存在 innodb_buffer_pool 中,因此通常不是磁盘命中。
归档时间: |
|
查看次数: |
101 次 |
最近记录: |