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
,它想要使用客户端架构缓存,因此无法正确缓存外部表?
而且,如果我不能得到一个明确的答案,我将如何开始测试缓存中的内容和不包含的内容?
显然,在大多数情况下,时间应该以 UTC 格式存储。在所有情况下,记录过去事件的日期时间都应以 UTC 格式存储。我们这样做是因为民间时间不断变化,而事件发生的时刻与当地政府认为的时间无关。
但是,当时间与日期分离时,当它们指的是挂钟时间时,我认为它们应该存储在挂钟时间中。
假设我有一个系统必须在特定时区的下午 3 点执行事件,我认为我最好将时间存储为下午 3 点。当事件重复发生并且应该总是在下午 3 点发生时更是如此——无论夏令时是否生效。如果它应该在本地下午 3 点对不同时区的多个用户发生,那么在 UTC 中存储任何内容似乎很愚蠢。
对我来说,这感觉很明显。但是我正在寻找可以支持我的可信赖来源的标准、规范或至少是博客文章。