我每天都有MySQL / Slave设置我们正在从机上执行查询以进行审核。该数据库上的表有超过5000万行。如果我在slave上执行那些查询,slave就会在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
答案 0 :(得分:0)
如果您需要实时数据,则需要从主数据中进行选择。在主/从环境中插入/选择通常不是一个好主意。如果使用基于语句的复制,SELECT也需要在从属服务器上运行。如果SELECT需要10秒钟才能运行,你的奴隶将会落后10秒钟。
插入通常非常非常快。由于需要准备时间,SELECT会大大减慢INSERT的速度。在大多数情况下,MySQL一次复制1个语句。在该声明完成之前,复制到奴隶将落后。
虽然违反直觉,但通常最好选择数据,创建INSERT语句(即在应用程序层中),然后运行INSERT。