
想实时查看MySQL所执行的sql语句,类似mssql里的事件探查器。对my.ini文件进行设置,打开文件进行修改:
basedir=E:/MySQL 4.0.12 #bind-address=192.168.15.196 datadir=E:/MySQL 4.0.12/data #language=E:/MySQL 4.0.12/share/your language directory #slow query log#=slowqueris.log #tmpdir#= #port=3306 #set-variable=key_buffer=16M
ong_query_time =1 --是指执行超过多久的sql会被log下来,这里是1秒
log-slow-queries=slowqueris.log --将查询返回较慢的语句进行记录
log-queries-not-using-indexes = nouseindex.log --就是字面意思,log下来没有使用索引的query
log=mylog.log --对所有执行语句进行记录
以上参数开启后,可能会影响MySQL性能,在生产环境下建议关闭
如何使用新的更新日志
如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。
用下列方法可以强制服务器启用新的更新日志:
mysqladmin flush-logs
你一般需要在命令行提供使用的`数据库用户:
mysqladmin –u root –p flush-logs mysqladmin refresh
你一般需要在命令行提供使用的数据库用户:
mysqladmin –u root –p refresh
如果你正在使用MySQL 3.21或更早的版本,你必须使用mysqladmin refresh。
SQL命令
FLUSH LOGS
重启服务器
上述方法都具有这样的功能:
关闭并且再打开标准和更新记录文件。如果你指定了一个没有扩展名的更新记录文件,新的更新记录文件的扩展数字将相对先前的文件加1。
mysql>FLUSH LOGS
如何使用新的常规日志
用上面的方法同样可以强制更新常规日志。
要准备备份常规日志,其步骤可能复杂一些:
$ cd mysql-data-directory$ mv mysql.log mysql.old$ mysqladmin flush-tables
然后做一个备份并删除“mysql.old”。
mysql提供可以用来分析当前会话中语句执行的资源消耗的情况,可以用于SQL的调优的测量
默认情况下,参数处于关闭状态,保存最近15次的运行结果
分析步骤
1、查看当前版本是否支持
show variables like 'profiling'
2、开启功能
set profiling =on
3、运行SQL
4、执行
show profiles
可以看到每条SQL的执行耗时情况
5、诊断SQL
show profile cpu,block io for query [ 查询ID号]
show profile cpu,block io for query 10
ALL 所有的开销信息
BLOCK IO 块IO相关开销
CONTEXT SWITCHES 上下文切换次数开销,被动和主动
CPU CPU相关开销信息
IPC 发送和接受相关开销信息
MEMORY 内存相关开销信息
PAGE FAULTS 页面错误相关开销信息
SOURCE Source_function,Source_file,Source_line相关的开销信息
SWAPS 交换次数相关开销的信息
需要注意
concerting HELP to MyISAM 查询结果太大,内存都不够用了往磁盘上搬了
Creating tmp table 创建临时表 拷贝数据到临时表,用完再删除
Copying to tmp table on disk 把内存中临时表复制到磁盘
出现在select语句中的select语句,称为子查询或内查询。
外部的select查询语句,称为主查询或外查询。
测试数据比较多,放在我的个人博客上了。
浏览器中打开链接:http://www.itsoku.com/article/196
mysql中执行里面的 javacode2018_employees库 部分的脚本。
成功创建 javacode2018_employees 库及5张表,如下:
运行最后一条结果如下:
in,any,some,all分别是子查询的关键词之一。
in :in常用于where表达式中,其作用是查询某个范围内的数据
any和some一样 : 可以与=、>、>=、<、<=、>结合起来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的任何一个数据。
all :可以与=、>、>=、<、<=、>结合使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的其中的所有数据。
下文中会经常用到这些关键字。
运行结果:
not in的情况下,子查询中列的值为NULL的时候,外查询的结果为空。
建议:建表是,列不允许为空。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)