浏览模式: 普通 | 列表
分类: Mysql | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | >

mysql分析慢查询日志步骤

[ 2018-07-13 14:48:08 | 作者: admin ]
方式一:通过工具分析

MySQL自带了mysqldumpslow工具用来分析slow query日志,除此之外,还有一些好用的开源工具。比如MyProfi(下载地址:http://sourceforge.net/projects/myprofi/)、mysql-log-filter,当然还有mysqlsla

以下是mysqldumpslow常用参数说明,详细的可应用mysqldumpslow -help查询。

-s,是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序(从大到小),ac、at、al、ar表示相应的倒叙。
-t,是top n的意思,即为返回前面多少条数据。
-g,后边可以写一个正则匹配模式,大小写不敏感。



接下来就是用mysql自带的慢查询工具mysqldumpslow分析了(mysql的bin目录下),我这里的日志文件名字是host-slow.log。
...

阅读全文…
其实想要执行一次有实际意义的慢查询比较困难,因为在自己测试的时候,就算查询有20万条数据的海量表,也只需要0.几秒。我们可以通过如下语句代替:
SELECT SLEEP(10);
然后查看慢查询的数量
通过如下sql语句,来查看一共执行过几次慢查询:
show global status like '%slow%';


mysql5.0和mysql5.1版本,记录慢查询日志
log-slow-queries="D:/Program Files/MySQL/mysql5.6/logs/mysql-slow.log"
long_query_time =2

mysql5.5和mysql5.6版本,记录慢查询日志
#log_queries_not_using_indexes=1
...

阅读全文…
问题:  

  今天在MySQL数据库删除重复数据的时候遇到了一个问题。如下脚本:
DELETE FROM tempA WHERE tid IN (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
)

  会出现报错信息:

  You can't specify target table 'tempA' for update in FROM clause

  大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。

 

解决方法:

  需要对上述脚本进行改造,如下:
DELETE FROM tempA WHERE tid NOT IN (
SELECT t.tid FROM (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
...

阅读全文…
1,修改配置文件(需重启mysqld服务):

【windows】开启所有日志
log-error="D:/Program Files/MySQL/MySQL Server 5.6/logs/error.log"
general-log=1
general-log-file="D:/Program Files/MySQL/MySQL Server 5.6/logs/query.log"
slow_query_log=on
slow_query_log_file="D:/Program Files/MySQL/MySQL Server 5.6/logs/slow.log"
long_query_time=2

【linux】开启慢查询
[root@localhost app]# cat /etc/my.cnf
...

阅读全文…
剔除网上提供的dos 命令的解决办法,在网上找到是因为phpmyadmin 没有找到合适的解决办法,于是在phpmyadmin 文件夹下建立,tmp 文件,然后给予 everyone 读写权限,问题解决
 
另外也可能是 PHP.ini 的配置问题,需要把safe_mode = off 改为 safe_mode = on
 
问题解决

mysql中general_log(通用查询日志)关闭

[ 2017-06-23 09:00:34 | 作者: admin ]
通用查询日志--可以关闭

        首先,进入mysql,输入

                mysql> show global variables like '%general%';

                +------------------+-----------------------+

                | Variable_name | Value |

                +------------------+-----------------------+

                | general_log | ON |

                | general_log_file | /opt/mysql/master.log |

                +------------------+-----------------------+
...

阅读全文…

MySQL按照汉字的拼音排序

[ 2017-06-16 10:41:34 | 作者: admin ]
按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序;

 

如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了)。

直接在查询语句后面 添加 order by name asc; 查询结果按照姓氏的升序排序;

 

如果存储姓名的字段采用的是 utf8字符集,需要在排序的时候对字段进行转码;对于的代码是 order by convert(name using gbk) asc; 同样,查询的结果也是按照姓氏的升序排序;

win2003下面mysql5.6的安装问题

[ 2017-05-23 14:49:56 | 作者: admin ]
p.s. 考虑性能问题,一般并发高的服务器需要修改 max_connections 参数
在win2003需要直接安装解压版的mysql5.5和mysql5.6,如果提示“由于应用程序配置不正确,应用程序未能启动”,安装下必要的运行库,如vc++2008,vc++2010

将MySQL 添加到服务中
以管理员模式启动cmd,进入mysql安装路径:
mysqld --install MySQL --defaults-file="C:\Windows\my.ini"

删除mysql服务
mysqld –remove MySQL


mysql5.6的my.ini的样本如下
[client]
port=3306
default-character-set=utf8

[mysqld]
...

阅读全文…