今天仔细看了下Flush语法,同时在工做中也常常使用Flush命令,在这儿汇总下。MySQL的FLUSH句法(清除或者从新加载内部缓存) FLUSH flush_option [,flush_option],若是你想要清除一些MySQL使用内部缓存,你应该使用FLUSH命令。为了执行FLUSH,你必须有reload权限。 数据库
flush_option 能够是下列任何东西: 缓存
HOSTS 这个用的最多,常常遇见。主要是用来清空主机缓存表。若是你的某些主机改变IP数字,或若是你获得错误消息Host ... isblocked,你应该清空主机表。当在链接MySQL服务器时,对一台给定的主机有多于 max_connect_errors个错误接二连三地发生,MySQL为了安全的须要将会阻止该主机进一步的链接请求。清空主机表容许主机再尝试链接。 安全
LOGS 关闭当前的二进制日志文件并建立一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。
PRIVILEGES 这个也是常常使用的,每当从新赋权后,为了以防万一,让新权限当即生效,通常都执行一把,目地是从数据库受权表中从新装载权限到缓存中。
TABLES 关闭全部打开的表,同时该操做将会清空查询缓存中的内容。 服务器
FLUSH TABLES WITH READ LOCK 关闭全部打开的表,同时对于全部数据库中的表都加一个读锁,直到显示地执行unlock tables,该操做经常用于数据备份的时候。
STATUS 重置大多数状态变量到0。 性能
MASTER 删除全部的二进制日志索引文件中的二进制日志文件,重置二进制日志文件的索引文件为空,建立一个新的二进制日志文件,不过这个已经不推荐使用,改为reset master 了。能够想象,之前本身是多土啊,原本一条简单的命令就能够搞定的,却要好几条命令来,之前的作法是先查出来当前的二进制日志文件名,再用purge 操做。 日志
QUERY CACHE 重整查询缓存,消除其中的碎片,提升性能,可是并不影响查询缓存中现有的数据,这点和Flush table 和Reset Query Cache(将会清空查询缓存的内容)不同的。 索引
SLAVE 相似于重置复制吧,让从数据库忘记主数据库的复制位置,同时也会删除已经下载下来的relay log,与Master同样,已经不推荐使用,改为Reset Slave了。这个也颇有用的。 io
通常来说,Flush操做都会记录在二进制日志文件中,可是FLUSH LOGS、FLUSH MASTER、FLUSH SLAVE、FLUSH TABLES WITH READ LOCK不会记录,所以上述操做若是记录在二进制日志文件中话,会对从数据库形成影响。注意:Reset操做其实扮演的是一个Flush操做的加强版的角色。 table