Monthly Archives: June 2015

了解 select count(*), count(1) 和 count(field)

By | 2015/06/30

我们以 MySQL 中的聚合函数 count 来说明 count(*), count(1) 和 count(field) 三者之间的关系以及背后的原理. 概念 http://dev.mysql.com/doc/refman/5.6/en/group-by-functions.html#function_count COUNT(expr) 函数返回 select 语句中表达式 expr 非 null 值的数量, 返回值类型为 bigint. Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement. The result is a BIGINT value.

MySQL slave 延迟复制

By | 2015/06/01

MySQL slave 延迟复制 延迟复制是一个很简单的概念,区别于传统的异步复制(接近实时), 比如用户误操作, 删除了重要的表, 延迟复制特性保证了用户有机会从延迟的 slave 中恢复误删除的表. 该特性的问题在于需要保证用户有足够的时间从 slave 阻止误操作复制的发生. 要理解该特性如何实现, 我们先简单回顾下 MySQL replication 如何实现, 见下图: 当 master 有一个更新操作(create, drop, delete, insert, update 等), 该更新操作应用到本地的磁盘并写到 binary log 里,之后更新操作异步(接近于实时)的从master 的 binary log 复制到 slave 的 relay log, 最后 slave 的 sql thread 线程读取 relay log, 将更新操作应用到 slave 表中.