`
xiaoqiang6775
  • 浏览: 32529 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MYSQL优化与show命令

 
阅读更多

 

show命令
a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称
b. show databases; -- 显示mysql中所有数据库的名称
c. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称
d. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令
e. show index from table_name; -- 显示表的索引
f. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量 show status like 'qcache%';
g. show variables; -- 显示系统变量的名称和值 show variables like 'data%'
h. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
i. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
j. show privileges; -- 显示服务器所支持的不同权限
k. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库
l. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库
m. show engines; -- 显示安装以后可用的存储引擎和默认引擎。
n. show innodb status; -- 显示innoDB存储引擎的状态
o. show logs; -- 显示BDB存储引擎的日志 show global variables like '%log%';
p. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知
q. show errors; -- 只显示最后一个执行语句所产生的错误
r. show [storage] engines; --显示安装后的可用存储引擎和默认引擎
s. show procedure status; --显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
t. show create procedure sp_name; --显示某一个存储过程的详细信息

explain命令:explain SELECT * FROM TABLEA \G; --查看SQL语句的执行情况
性能好坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

MYSQL优化
强制索引 FORCE INDEX

SELECT * FROM TABLE1 FORCE INDEX (FIELD1) …

 
以上的SQL语句只使用建立在FIELD1上的索引,而不使用其它字段上的索引。
忽略索引 IGNORE INDEX

SELECT * FROM TABLE1 IGNORE INDEX (FIELD1, FIELD2) …
 

在上面的SQL语句中,TABLE1表中FIELD1和FIELD2上的索引不被使用。
关闭查询缓冲 SQL_NO_CACHE

SELECT SQL_NO_CACHE field1, field2 FROM TABLE1;

 
有一些SQL语句需要实时地查询数据,或者并不经常使用(可能一天就执行一两次),这样就需要把缓冲关了,不管这条SQL语句是否被执行过,服务器都不会在缓冲区中查找,每次都会执行它。
强制查询缓冲 SQL_CACHE

SELECT SQL_CALHE * FROM TABLE1;

 
如果在my.ini中的query_cache_type设成2,这样只有在使用了SQL_CACHE后,才使用查询缓冲。
优先操作 HIGH_PRIORITY
HIGH_PRIORITY可以使用在select和insert操作中,让MYSQL知道,这个操作优先进行。

SELECT HIGH_PRIORITY * FROM TABLE1;

 
滞后操作 LOW_PRIORITY
LOW_PRIORITY可以使用在insert和update操作中,让mysql知道,这个操作滞后。
update LOW_PRIORITY table1 set field1= where field1= …
延时插入 INSERT DELAYED
INSERT DELAYED INTO table1 set field1= …
INSERT DELAYED INTO,是客户端提交数据给MySQL,MySQL返回OK状态给客户端。而这是并不是已经将数据插入表,而是存储在内存里面等待排队。当mysql有空余时,再插入。另一个重要的好处是,来自许多客户端的插入被集中在一起,并被编写入一个块。这比执行许多独立的插入要快很多。坏处是,不能返回自动递增的ID,以及系统崩溃时,MySQL还没有来得及插入数据的话,这些数据将会丢失。
强制连接顺序 STRAIGHT_JOIN

SELECT TABLE1.FIELD1, TABLE2.FIELD2 FROM TABLE1 STRAIGHT_JOIN TABLE2 WHERE …

 
由上面的SQL语句可知,通过STRAIGHT_JOIN强迫MySQL按TABLE1、TABLE2的顺序连接表。如果你认为按自己的顺序比MySQL推荐的顺序进行连接的效率高的话,就可以通过STRAIGHT_JOIN来确定连接顺序。
强制使用临时表 SQL_BUFFER_RESULT
SELECT SQL_BUFFER_RESULT * FROM TABLE1 WHERE …
当我们查询的结果集中的数据比较多时,可以通过SQL_BUFFER_RESULT.选项强制将结果集放到临时表中,这样就可以很快地释放MySQL的表锁(这样其它的SQL语句就可以对这些记录进行查询了),并且可以长时间地为客户端提供大记录集。
分组使用临时表 SQL_BIG_RESULT和SQL_SMALL_RESULT

SELECT SQL_BUFFER_RESULT FIELD1, COUNT(*) FROM TABLE1 GROUP BY FIELD1;

 
一般用于分组或DISTINCT关键字,这个选项通知MySQL,如果有必要,就将查询结果放到临时表中,甚至在临时表中进行排序。SQL_SMALL_RESULT比起SQL_BIG_RESULT差不多,很少使用。

 

复合索引

CREATE INDEX idx_example ON table1 (col1 ASC, col2 DESC, col3 ASC)

 
在这种情况下,以下查询可以得到优化:

SELECT col1, col2, col3 from table1ORDER BY col1 ASC, col2 DESC, col3 ASC
和
SELECT col1, col2, col3 from example ORDER BY col1 DESC, col2 ASC, col3 DESC
 

==>索引不用于优化在 ORDER BY 子句中具有 ASC 和 DESC 的其它任何模式的查询。
例如:SELECT col1, col2, col3 from table1 ORDER BY col1 ASC, col2 ASC, col3 ASC

 不会得到优化。

修改PHP执行时间,防止脚本超时,在大数据量的操作,比如批量添加更新或上传等时候,执行的时间就比较长,自己看情况来设置
PHP.INI配置文件中(秒)
max_execution_time = 30
max_input_time = 60     一个脚本等待输入数据的时间有多长,大量的IO操作就需要调大
memory_limit = 128M

脚本执行的程序中
//修改最大执行时间
ini_set("max_execution_time", 3000);//5分钟
//修改此次的最大运行内存
ini_set("memory_limit", '256M');

 

分享到:
评论

相关推荐

    mysql优化(1)show命令 慢查询日志 explain profiling

    在本篇中,我们将聚焦于三个MySQL优化工具:`SHOW`命令、慢查询日志和`EXPLAIN`与`PROFILING`。 一、SHOW命令 `SHOW`命令是MySQL中的一个非常实用的工具,用于获取数据库系统的信息。它可以帮助我们查看数据库的...

    mysql的show命令

    总的来说,`SHOW`命令是MySQL管理的重要工具,通过它,我们可以获取大量关于数据库、表、索引、用户权限、进程状态等信息,从而更好地管理和优化数据库系统。在日常工作中,熟练掌握这些命令将大大提高工作效率。

    Mysql show命令全面详解

    MySQL数据库的show命令是一个非常实用且功能强大的工具,它允许用户快速获取数据库服务器的状态信息、数据库对象的信息以及当前的配置参数等。在使用show命令时,我们可以针对不同的需求使用不同的参数,下面详细...

    mysql优化.pdf

    在进行MySQL优化时,我们需要对数据库进行深入分析,以便找到性能瓶颈并进行相应的调整。优化可以分为三个主要部分:优化概述、查询与索引优化分析以及配置优化。 首先,在优化概述部分,了解MySQL数据库常见瓶颈是...

    MySQL中show命令方法得到表列及整个库的详细信息(精品珍藏)

    总的来说,`SHOW`命令是MySQL管理工具箱中的关键组成部分,提供了丰富的信息用于数据库管理和优化。通过熟练掌握这些命令,开发者和管理员可以更好地理解数据库结构、性能状况以及用户权限,从而进行有效的数据库...

    mysql5.6性能优化

    在MySQL中,可以通过`SHOW STATUS`命令来查看一系列有关数据库性能的参数。这些参数可以帮助我们了解当前数据库的运行状态,并为后续的优化工作提供参考依据。 ##### 常用参数: - **Slow_queries**:记录了慢查询...

    MySQL优化全攻略-相关数据库命令

    首先,SHOW 命令是用于获取 MySQL 服务器状态信息的重要工具。通过执行 `SHOW STATUS;`,你可以查看服务器的运行状态,包括被中止的连接、尝试的连接次数、并发连接的最大值等,这些信息对于识别系统瓶颈和性能低下...

    MySql经典命令大全

    这里我们聚焦于"MySql经典命令大全",它涵盖了MySQL的基础操作到高级特性的命令,对于数据库管理员和开发者来说是必备的学习资料。 首先,让我们了解MySQL的基本命令。在命令行界面中,`mysql -u username -p` 是...

    mysql中文手册及常用命令

    对于进阶用户,掌握事务处理、备份与恢复、性能优化等高级主题则十分必要。 接下来是"mysql命令大全.chm",这是一份包含了MySQL客户端命令行工具的常用命令集合。在Linux或命令行环境下操作MySQL时,熟悉这些命令能...

    通过showstatus来优化MySQL数据库

    通过 show status 命令可以获取 MySQL 数据库的各种状态信息,从而对数据库进行优化。下面是通过 show status 命令获取的信息和对应的优化建议: 1. 慢查询配置:通过 show variables like '%slow%' 和 show global...

    MYSQL优化实施方案

    ### MySQL优化实施方案 #### 前言 在深入MySQL优化之前,我们首先需要理解MySQL的查询过程,因为很多查询优化工作本质上就是确保MySQL优化器能够按照预期的方式高效地执行查询。接下来,我们将从多个角度来探讨如何...

    MySQL优化中的内存计算公式

    ### MySQL优化中的内存计算公式详解 #### 一、引言 在数据库管理中,合理配置MySQL的内存使用是提升性能的关键之一。通过精确计算MySQL占用的内存大小,可以帮助我们更好地理解系统资源分配,并据此进行相应的优化...

    MySQL优化文档笔记

    可以使用`SHOW PROFILE`和`SHOW PROCESSLIST`命令来查看查询的详细信息和当前的连接状态。 数据类型的优化是提高性能的关键。应选择最小且能满足需求的数据类型,如使用`TINYINT`代替`BIGINT`,避免使用`NULL`,...

    MySQL索引优化课件

    SHOW STATUS和SHOW VARIABLES命令可用于查看数据库的运行状态和配置参数,以调整和优化性能。 总之,MySQL索引优化是一项涉及广泛的知识,包括但不限于索引类型选择、索引维护、存储过程和触发器的合理运用。通过...

    MySql性能优化集合--满满的干货

    #### 一、MySQL优化概述 MySQL作为一种广泛使用的开源关系型数据库管理系统,在数据处理方面表现优秀。然而,在高并发、大数据量的情况下,可能会遇到性能瓶颈。因此,进行MySQL性能优化是非常必要的。MySQL优化...

    mysql的慢日志配置查询和show processlist使用

    MySQL 的慢日志配置查询和 Show Processlist 使用是 MySQL 中两个非常重要的概念,它们都是用于优化和 Troubleshooting MySQL 性能的关键工具。在这篇文章中,我们将详细介绍 MySQL 的慢日志配置查询和 Show ...

    mysql优化笔记.doc

    - 使用`SHOW STATUS`命令监控数据库状态,定位慢查询。 - 调整`long_query_time`参数,定义慢查询的阈值。 - 构造高效的查询语句,避免全表扫描和多表关联。 通过以上策略的综合应用,可以显著提升MySQL数据库的...

Global site tag (gtag.js) - Google Analytics