0

我每天都有一个 MySQL/Slave 设置,我们在从机上执行查询以进行审计。该数据库上的表有超过 5000 万行。如果我在 slave 上执行这些查询,则 slave 正在 master 后面运行。此时如果在 Master DB 中执行插入查询。此插入查询在从属数据库上执行多次。示例场景:每次用户登录时,我们都会插入他们的详细信息以供审核。看下面的数据,它将在表上多次插入。用户无法在同一秒内多次登录。为什么会发生,我该如何解决?

| Kannan | 2012-04-28 12:27:57           | 
| Kannan | 2012-04-28 12:27:57           | 
| Kannan | 2012-04-28 12:27:57           | 
| Kannan | 2012-04-28 12:27:57           | 
| Kannan | 2012-04-28 12:27:57   
4

1 回答 1

0

如果你需要实时数据,你真的需要从master中选择。在主/从环境中插入/选择通常不是一个好主意。如果您使用基于语句的复制,则 SELECT 也需要在从属服务器上运行。如果 SELECT 需要 10 秒才能运行,那么您的从站将落后 10 秒。

插入通常非常非常快。由于所需的准备时间,SELECT 大大减慢了 INSERT。在大多数情况下,MySQL 一次复制 1 条语句。在该语句完成之前,复制到从站将落后。

虽然违反直觉,但通常最好选择数据,创建 INSERT 语句(即在应用层),然后运行 ​​INSERT。

于 2012-06-20T07:44:14.203 回答