mysql explain 性能优化神器

2016-1-18 杜世伟 Mysql

mysql 在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。


763020-20160417142105895-121211600.png

1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。

2)、select_type列常见的有:
A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个
B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary。且只有一个
C:union:union连接的两个select查询,第一个查询是dervied派生表,除了第一个表外,第二个以后的表select_type都是union
D:dependent union:与union一样,出现在union 或union all语句中,但是这个查询要受到外部查询的影响
E:union result:包含union的结果集,在union和union all语句中,因为它不需要参与查询,所以id字段为null
F:subquery:除了from字句中包含的子查询外,其他地方出现的子查询都可能是subquery
G:dependent subquery:与dependent union类似,表示这个subquery的查询要受到外部表查询的影响
H:derived:from字句中出现的子查询,也叫做派生表,其他数据库中可能叫做内联视图或嵌套select

阅读全文>>

标签: mysq explain

评论(0) 浏览(12459)

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL

2015-10-27 杜世伟 Mysql

今天使用Mysql中,通过create function创建function 的时候出现以下报错,特总结如下:
        ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
中文的大概意思是:
        此function函数在其声明中没有任何确定,NO SQL或READS SQL DATA,并且启用了二进制日志记录(您可能希望使用较不安全的log_bin_trust_ function_creators变量

阅读全文>>

标签: mysql function create

评论(0) 浏览(4331)

mysql 忘记的数据库密码

2014-8-6 杜世伟 Mysql

mysql 忘记的数据库密码

mysql -uroot -p

Enter password:

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)

root 密码可以丢失或者忘记了。
解决思路:目前是进入不了数据库的情况,所以我们要考虑是不是可以跳过权限。因为在数据库中,MySQL 数据库中 user 表记录着我们用户的信息。
解决方法:启动 MySQL 数据库的过程中,可以这样执行:
/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf  –skip-grant-tables &
这样启动,就可以不用输入密码,直接进入 MySQL 数据库了。然后在修改你自己想要改的 root 密码即可。
update mysql.user set password=password(‘04d20fb9c38c9′) where user=’root’

标签: linux mysql

评论(0) 浏览(7020)

MySQL性能测试工具--mysqlslap使用详解

2014-7-26 杜世伟 Mysql

MySQL性能测试工具mysqlslap使用详解
mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。

常用的选项
--concurrency    并发数量,多个可以用逗号隔开
--engines       要测试的引擎,可以有多个,用分隔符隔开,如--engines=myisam,innodb
--iterations      要运行这些测试多少次
--auto-generate-sql        用系统自己生成的SQL脚本来测试
--auto-generate-sql-load-type    要测试的是读还是写还是两者混合的(read,write,update,mixed)
--number-of-queries           总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算
--debug-info               额外输出CPU以及内存的相关信息
--number-int-cols             创建测试表的int型字段数量
--number-char-cols             创建测试表的chat型字段数量

阅读全文>>

标签: linux mysql mysqlslap

评论(0) 浏览(7046)

mysql 为用户添加资源限制

2014-3-22 杜世伟 Mysql

在使用MySQL中Grant新增用户的时候,为用户添加资源限制

在MySQL中,你可以为单独的用户设置MySQL的资源使用限制。可用的资源限制如下:

阅读全文>>

标签: grant mysql show

评论(0) 浏览(3557)

mysql 批量删除指定前缀的表

2014-3-10 杜世伟 Mysql

mysql批量删除指定前缀的表,巧妙的使用mysql中提供的concat函数;CONCAT()函数用于将多个字符串连接成一个字符串,通过使用这个函数巧妙的查询mysqlinformation_schema数据库中tables表拼接成drop语句,然后执行:

Select CONCAT( 'drop table ', table_name, ';' )  FROM information_schema.tables Where table_name LIKE 'a_%';

阅读全文>>

标签: mysql drop

评论(0) 浏览(2828)

MYSQL IFNULL函数的使用

2013-12-21 杜世伟 Mysql

下文对MYSQL IFNULL函数的使用进行了详细的叙述,供您参考学习,如果您在MYSQL IFNULL函数使用方面遇到过类似的问题,不妨一看。

MYSQL IFNULL(expr1,expr2)          
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。          
mysql> select IFNULL(1,0);      
                     -> 1      
mysql> select IFNULL(0,10);      
                     -> 0      
mysql> select IFNULL(1/0,10);      
                     -> 10      
mysql> select IFNULL(1/0,yes);      
                     -> yes     

阅读全文>>

标签: linux mysql ifnull if

评论(0) 浏览(6496)

linux mysql备份数据库

2013-10-30 杜世伟 Mysql

#!/bin/sh
# author shiwei.du
# date   2013-10-30

NOW_TIME=`date "+%y%m%d%H%M%S"` # 现在时间戳
OVER_TIME=`date -d'3 day ago' "+%y%m%d%H%M%S"`#过期的时间戳
DBHOST=192.168.1.21 #服务器ip地址
DBNAME=test  #数据库名称
DBUSER=root #操作者
DBPASSWD=****** #密码
DBCHARACTER=utf8mb4 #数据库编码
BACKUPPATH="/home/mysqlbackup/"   #备份路径
BACKUPLOG=$BACKUPPATH"mysqlbackup.log"  #备份日志文件

阅读全文>>

标签: linux mysql mysqldump mysqlback

评论(0) 浏览(3354)

mysql分表,分区的区别和联系

2013-10-8 杜世伟 Mysql

一,什么是mysql分表,分区
什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,
什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上
二,mysql分表和分区有什么区别呢
1,实现方式上
a),mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表结构文件。
[root@BlackGhost test]# ls |grep user  

阅读全文>>

标签: mysql 分区 分表

评论(0) 浏览(2958)

MySQL数据库基准压力测试工具之MySQLSlap使用实例

2013-7-21 杜世伟 Mysql

一、Mysqlslap介绍

mysqlslap是MySQL5.1之后自带的benchmark基准测试工具,类似Apache Bench负载产生工具,生成schema,装载数据,执行benckmark和查询数据,语法简单,灵活,容易使用。该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验证依据,笔者建议系统运维人员应该掌握一些常见的压力测试工具,这样才能较为准确的掌握线上系统能够支撑的用户流量上限及其抗压性等问题。 

二、使用方法介绍

可以使用mysqlslap --help来显示使用方法:

1) --concurrency代表并发数量,多个可以用逗号隔开,例如:concurrency=10,50,100, 并发连接线程数分别是10、50、100个并发。

2) --engines代表要测试的引擎,可以有多个,用分隔符隔开。

3) --iterations代表要运行这些测试多少次。

4) --auto-generate-sql 代表用系统自己生成的SQL脚本来测试。

5)--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)

6) --number-of-queries 代表总共要运行多少次查询。每个客户端运行的查询数量可以用查询总数/并发数来计算。

阅读全文>>

标签: mysql mysqlslap

评论(0) 浏览(1550)

Powered by emlog 沪ICP备2023034538号-1