关于 SELECT /*!40001 SQL_NO_CACHE */ * FROM 的解惑

由于 在数据库做了缓存,在对数据库做了备份,然后在慢查询日志中发现了这一串字符:

SELECT /*!40001 SQL_NO_CACHE */   * FROM

上网查了一下,发现好多答案,好多人说的都不正确,人云亦云,故整理下:

1  /*!   */ 这是mysql 特里的语法,并非注释,因为里面达到条件也会执行。

2 !后面是版本号, 如果本数据库等于或大于此版本号,那么注释内的代码也会执行。

3 那么这句话的意思是 如果版本号大于或等于4,会执行 sql_no_cache, 就是不用缓存数据。 而并非说本次查询不作为下次查询的缓存。

4 在备份操作时Mysql 会自动调用此语法。(个人推测)

———— 如果错误,欢迎指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 13:43:25

关于 SELECT /*!40001 SQL_NO_CACHE */ * FROM 的解惑的相关文章

mysqldump出现 SQL_NO_CACHE慢查询

mysqldump -h 10.23.95.166 -uroot -p${password} --all-databases --single-transaction --flush-logs --master-data=2 --force 出现slow_log: SELECT /*!40001 SQL_NO_CACHE */ * FROM `coupon_code` 原因: 该语句得到表coupon_code的所有数据,在backup.sql中会生成相应的insert语句,恢复时执行这些数据的

mysql之show engine innodb status解读(转)

add by zhj: 我第一次知道这个命令是线上服务出了问题,然后同事用这个命令去查看死锁.但用这个命令看死锁有一定的局限性,它只能看到最后一次死锁, 而且只能看到死锁环中的两个事务所执行的最后一条语句(即被死锁卡住的那条语句),看不到整个死锁环,也看到不整个事务的语句.但是即使这亲,对我 们来说也非常有用,因为一般来说,数据库同时存在多个死锁环的可能性比较小,而且有了死锁环中的事务的最后一条语句,我们找到整个死锁环不是太难. "show engine innodb status"这

mysqldump备份7

http://www.cnblogs.com/ivictor/p/5505307.html 对于MySQL的备份,可分为以下两种: 1. 冷备 2. 热备 其中,冷备,顾名思义,就是将数据库关掉,利用操作系统命令拷贝数据库相关文件.而热备指的是在线热备,即在不关闭数据库的情况下,对数据库进行备份.实际生产中基本上都是后者. 关于热备,也可分为两种方式: 1. 逻辑备份 2. 物理备份 对于前者,常用的工具是MySQL自带的mysqldump,对于后者,常用的工具是Percona提供的XtraBa

MySQL Database Backup Methods Season 2 – MySQL Data Dumper

说到MySQL数据库的备份, MySQL Data Dumper(项目)也是常用的工具, 其有两个可执行程序: mydumper, 负责导出数据; myloader,  负责导入数据. mydumper相对于mysqldump, 多了些特性, 在下面分析选项的过程中能体会到. 由于是第三方工具, 先来看下安装, 及可能遇到的问题. a. mydumper需要依赖一些开发库, 使用yum安装即可. [email protected]: ~# yum install glib* zlib* pcre

pt-table-checksum

pt-table-checksum是percona公司提供的一个用于在线比对主从数据一致性的工具. 实现原理 将一张大表分成多个chunk,每次针对一个chunk进行校验,同时将校验的结果通过REPLACE INTO语句写入到percona.checksums表中,然后该语句通过主从复制,在SLAVE中同样执行一次,校验的结果同样是写入到percona.checksums表中,最后,通过查询percona.checksums来获取主从不一致的信息. 常见用法 1. 基本用法 # pt-table

pt-online-schema-change中update触发器的bug

pt-online-schema-change在对表进行表结构变更时,会创建三个触发器. 如下文测试案例中的t2表,表结构如下: mysql> show create table t2\G *************************** 1. row *************************** Table: t2 Create Table: CREATE TABLE `t2` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KE

mysqldump原理1

http://blog.csdn.net/linwaterbin/article/category/1299332 mysqldump -S /tmp/mysql.sock --single-transaction --force --databases test > v1.sql [[email protected] data]# cat v1.sql -- MySQL dump 10.13 Distrib 5.6.28, for Linux (x86_64) -- -- Host: loca

mysqldump原理2

本文主要探讨 mysqldump 的几种主要工作方式,并且比较一下和 mk-parralel-dump的一些差异,为备份方式的选择提供更多的帮助. 首先来看下 mysqldump 的几个主要参数的实际工作方式. mysqldump 几个主要选项1. -q很简单,什么都不做,只是导出时加了一个SQL_NO_CACHE 来确保不会读取缓存里的数据. 081022 17:39:33 7 Connect [email protected] on 7 Query /*!40100 SET @@SQL_MO

mysqldump原理3

现网中数据库运维时,要经常对数据库做热备.为保证恢复时数据的完整性与一致性, 一种方法是在备份之前锁表,但锁表会影响正在运行的业务. mysqldump是当前MySQL中最常用的备份工具,通过mysqldump --help可以查看很多选项. 在mysqldump开始备份后,执行其它的更新数据库操作,mysqldump备份的结果会不会包含备份结束前对数据库的更改呢?在一个时间点备份,最理想的结果是备份的结果就是备份开始时的数据库快照.通过选择合适的选项做备份,mysqldump可以保证数据一致性