实验
我们先创建一个测试数据库mysql日志怎么记录:
快速创建一些数据:
连续执行同样的 SQL 数次 , 就可以快速构造千万级别的数据:
查看一下总的行数:
我们来释放一个大的 update:
然后另起一个 session,观察 performance_schema 中的信息:
可以看到,performance_schema 会列出当前 SQL 从引擎获取的行数 。
等 SQL 结束后 , 我们看一下 update 从引擎总共获取了多少行:
可以看到该 update 从引擎总共获取的行数是表大小的两倍 , 那我们可以估算:update 的进度 = (rows_examined) / (2 * 表行数)
??小贴士
information_schema.tables 中,提供了对表行数的估算,比起使用 select count(1) 的成本低很多,几乎可以忽略不计 。
那么是不是所有的 update,从引擎中获取的行数都会是表大小的两倍呢?这个还是要分情况讨论的,上面的 SQL 更新了主键,如果只更新内容而不更新主键呢?我们来试验一下:
等待 update 结束,查看 row_examined,发现其刚好是表大?。?
那我们怎么准确的这个倍数呢?
一种方法是靠经验:update 语句的 where 中会扫描多少行,是否修改主键,是否修改唯一键,以这些条件来估算系数 。
另一种方法就是在同样结构的较小的表上试验一下,获取倍数 。
这样,我们就能准确估算一个大型 update 的进度了 。
如何查看mysql运行,访问记录等日志1.首先确认mysql日志怎么记录你日志是否启用了
mysqlshow variables like 'log_bin';
2.如果启用了mysql日志怎么记录,即ON
那日志文件就在mysqlmysql日志怎么记录的安装目录的data目录下
3.怎样知道当前的日志
mysql show master status;4.看二进制日志文件用mysqlbinlog
shellmysqlbinlog mail-bin.000001
或者shellmysqlbinlog mail-bin.000001 | tail
Windows 下用类似的
如何在MySql中记录SQL日志记录一.错误日志
错误日志在Mysql数据库中很重要 , 它记录着mysqld启动和停止 , 以及服务器在运行过程中发生的任何错误的相关信息 。
1.配置信息
--log-error=[file-name]用来指定错误日志存放的位置 。
如果没有指定[file-name],默认hostname.err做为文件名,默认存放在DATADIR目录中 。
也可以将log-error配置到my.cnf文件中 , 这样就省去了每次在启动mysqld时都手工指定--log-error.例如:
[mysql@test2]$ vi /etc/my.cnf
# The MySQL server
[mysqld]
....
log-error = /var/lib/mysql/test2_mysqld.err
.....
2.错误信息样板
080313 05:21:55 mysqld started
080313 5:21:55 InnoDB: Started; log sequence number 0 43655
080313 5:21:55 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.0.26-standard-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)
080313 5:24:13 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
080313 5:24:13 InnoDB: Starting shutdown...
080313 5:24:16 InnoDB: Shutdown completed; log sequence number 0 43655
080313 5:24:16 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
080313 05:24:16 mysqld ended
080313 05:24:47 mysqld started
080313 5:24:47 InnoDB: Started; log sequence number 0 43655
080313 5:24:47 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.0.26-standard-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)
080313 5:33:49 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
三.查询日志
查询日志记录了clinet的所有的语句 。
Note:由于log日志记录了数据库所有操作,对于访问频繁的系统,此种日志会造成性能影响,建议关闭 。
推荐阅读
- ios游戏开发框架,ios游戏开发入门
- gis技术国内排名第几,gis最好的大学
- 角色扮演类游戏展厅,角色扮演展览
- java当前代码行 java首行代码
- flutter绘制折线图,flutter绘制流程
- redis的并发访问问题,redis处理并发问题
- mysql删除慢怎么优化,mysql删除数据很慢
- python编写函数文件 python如何编写函数然后调用
- 安卓手机怎么屏蔽通知,安卓手机怎么把通知屏蔽