??小贴士
information_schema.tables 中,提供了对表行数的估算,比起使用 select count(1) 的成本低很多,几乎可以忽略不计 。
那么是不是所有的 update,从引擎中获取的行数都会是表大小的两倍呢?这个还是要分情况讨论的 , 上面的 SQL 更新了主键,如果只更新内容而不更新主键呢?我们来试验一下:
等待 update 结束,查看 row_examined , 发现其刚好是表大?。?
那我们怎么准确的这个倍数呢?
一种方法是靠经验:update 语句的 where 中会扫描多少行,是否修改主键,是否修改唯一键,以这些条件来估算系数 。
另一种方法就是在同样结构的较小的表上试验一下,获取倍数 。
这样,我们就能准确估算一个大型 update 的进度了 。
何时,如何开启 MySql 日志MySQL有以下几种日志mysql日志怎么打开的:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志: -log-bin
默认情况下mysql日志怎么打开的,所有日志创建于mysqld数据目录中 。通过刷新日志mysql日志怎么打开的,你可以强制 mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志) 。当你执行一个FLUSH LOGS语句或执行mysqladmin flush-logs或mysqladmin refresh时 , 出现日志刷新
1. 错误日志
用--log- error[=file_name]选项来指定mysqld保存错误日志文件的位置 。如果没有给定file_name值,mysqld使用错误日志名 host_name.err 并在数据目录中写入日志文件 。如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件 。(如果未给出--log-error选项 , 则不会重新命名) 。
如果不指定--log-error,或者(在Windows中)如果你使用--console选项,错误被写入标准错误输出stderr 。通常标准输出为你的终端 。
2. 通用查询日志
用--log[=file_name]或-l [file_name]选项启动它 。如果没有给定file_name的值 , 默认名是host_name.log 。
3. 慢速查询日志
用--log-slow-queries[=file_name]选项启动时,mysqld 写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件.如果没有给出file_name值,默认未主机名,后缀为 -slow.log 。如果给出了文件名,但不是绝对路径名,文件则写入数据目录 。
3. 更新日志
用--log-update[=file_name]选项启动,不推荐使用.
是否启用了日志
mysqlshow variables like 'log_%';
怎样知道当前的日志
mysql show master status;
显示二进制日志数目
mysql show master logs;
看二进制日志文件用mysqlbinlog
shellmysqlbinlog mail-bin.000001
或者shellmysqlbinlog mail-bin.000001 | tail
在配置文件中指定log的输出位置.
Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:\Windows 下 。
Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下 。
在linux下:
Sql代码
# 在[mysqld] 中输入
#log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries= /usr/local/mysql/log/slowquery.log
# 在[mysqld] 中输入 #log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries= /usr/local/mysql/log/slowquery.log
windows下:
Sql代码
# 在[mysqld] 中输入
#log
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"
# 在[mysqld] 中输入 #log
推荐阅读
- java怎样代码换行,java编程规范换行
- 大容量的安卓平板推荐的简单介绍
- 网络游戏女玩家被人骂了,女孩子游戏被骂了怎么办?
- 联通无限路由器怎么连接,联通无限路由器怎么连接wifi
- c语言返回当前日期的函数 c语言回文日期
- 智邦国际erp考勤系统,智邦国际erp系统怎么样
- c语言随机数函数不重复 c语言随机生成不重复的数字
- 腾讯云通讯thinkphp,腾讯云通讯地址
- 手机重力感应出现什么问题,手机重力感应出现什么问题不能用