`

mysql的sql优化(前奏)

阅读更多

要优化mysql首先要知道什么地方需要优化,然后才能针对具体问题进行优化?难道不是吗?什么分库分表,建立索引....摆脱不要那么官方好吗?

 

1.学会和培养使用mysql的查看命令的使用习惯

什么你忘记如何创建表的语句了??

mysql> ? table
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
   ALTER TABLE
   ANALYZE TABLE
   CHECK TABLE
   CHECKSUM TABLE
   CREATE TABLE
   DROP TABLE
   OPTIMIZE TABLE
   RENAME TABLE
   REPAIR TABLE
   SHOW
   SHOW CREATE TABLE
   SHOW TABLE STATUS
   SPATIAL
   TRUNCATE TABLE

 

mysql> ? SHOW CREATE TABLE
Name: 'SHOW CREATE TABLE'
Description:
Syntax:
SHOW CREATE TABLE tbl_name

Shows the CREATE TABLE statement that creates the named table. To use
this statement, you must have some privilege for the table. This
statement also works with views.
SHOW CREATE TABLE quotes table and column names according to the value
of the sql_quote_show_create option. See
http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html.

URL: http://dev.mysql.com/doc/refman/5.5/en/show-create-table.html

Examples:
mysql> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
       Table: t
Create Table: CREATE TABLE t (
  id INT(11) default NULL auto_increment,
  s char(60) default NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM

 这回你知道了吧!!!

另外 ? contents会告诉你你可以查看那些命令

mysql> ? contents;
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
   Account Management
   Administration
   Compound Statements
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Functions and Modifiers for Use with GROUP BY
   Geographic Features
   Help Metadata
   Language Structure
   Plugins
   Procedures
   Storage Engines
   Table Maintenance
   Transactions
   User-Defined Functions
   Utility

 上面这个查看帮助文档的使用,可以帮助你在查找需要优化的sql语句。

 

2.mysql的慢查询日志

mysql> show global variables like 'log_%';
+---------------------------------+--------------------------+
| Variable_name                   | Value                    |
+---------------------------------+--------------------------+
| log_bin                         | OFF                      |
| log_bin_trust_function_creators | OFF                      |
| log_error                       | /var/log/mysql/error.log |
| log_output                      | FILE                     |
| log_queries_not_using_indexes   | OFF                      |
| log_slave_updates               | OFF                      |
| log_slow_queries                | OFF                      |
| log_warnings                    | 1                        |
+---------------------------------+--------------------------+
8 rows in set (0.01 sec)

mysql> show session variables like 'log_%';
+---------------------------------+--------------------------+
| Variable_name                   | Value                    |
+---------------------------------+--------------------------+
| log_bin                         | OFF                      |
| log_bin_trust_function_creators | OFF                      |
| log_error                       | /var/log/mysql/error.log |
| log_output                      | FILE                     |
| log_queries_not_using_indexes   | OFF                      |
| log_slave_updates               | OFF                      |
| log_slow_queries                | OFF                      |
| log_warnings                    | 1                        |
+---------------------------------+--------------------------+
8 rows in set (0.00 sec)

 第一个是mysql的全局配置,第二个是mysql的本次链接的配置。这几个日志介绍。默认mysql是没有开启慢查询日志的。需要将其设置为开启,并设置慢查询的配置。

mysql的慢查询日志的开启和设置及分析

 

3.通过mysql的慢查询日志很容易就能够知道具体那个sql语句出现了问题。定位到问题,接着就是分析这个sql语句的执行情况。使用的表是否有索引,索引是否使用了,是否走全表扫描了,是否使用了临时表.....

mysql> explain select * from test\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: test
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 2
        Extra: 
1 row in set (0.00 sec)

 使用explain或desc查看sql的执行信息,\G是使这些信息以垂直的方式显示。其中列名及其值代表的意义

 

4.针对3的分析结果进行相应的优化。

 

 

 

 

分享到:
评论

相关推荐

    从 0 开始带你成为MySQL实战优化高手全

    本资料集旨在帮助读者从零开始,逐步掌握MySQL实战优化技巧,成为一名真正的高手。 首先,让我们从基础开始。"每一行的实际数据在磁盘上是如何存储的.pdf"这一章节将详细介绍MySQL中的数据存储结构,包括InnoDB存储...

    千里之堤,溃于蚁穴——揭密SQL注入攻击——初识SQL注入

    - **SQL注入前奏曲**:熟悉SQL语法,理解SQL注入的基本原理。 - **SQL注入实战**:利用上述工具进行实践操作,寻找并利用网站中存在的SQL注入漏洞。 **4.2 实际案例分析** - **ASP + SQL Server 网站注入**:分析...

    mysql 8.0.11安装配置方法图文教程

    首先,文章提到需要从官方网站下载MySQL 8.0.11的安装包,这一步骤对于任何软件安装都是必要的前奏。下载时,网站可能还会提供一些配置参数,例如`sql_mode`,这些参数会决定数据库的行为模式,如`ONLY_FULL_GROUP_...

    jsp连接mysql数据库

    在这个场景中,我们关注的是使用Java Server Pages (JSP)技术连接到MySQL数据库的过程。JSP是一种动态网页开发技术,允许我们在HTML页面中嵌入Java代码,从而实现服务器端的数据处理。 首先,我们需要引入必要的...

    JDBC工具类完整版.docx

    1. **静态初始化块**:在这里,`Class.forName()`方法被用来加载数据库驱动,这是建立数据库连接的前奏。在这个例子中,它加载的是MySQL的JDBC驱动`com.mysql.jdbc.Driver`。这一步是必要的,因为JDBC驱动必须在连接...

    使用Python操作MySQL的一些基本方法

    前奏 为了能操作数据库, 首先我们要有一个数据库, 所以要首先安装Mysql, 然后创建一个测试数据库python_test用以后面的测试使用 CREATE DATABASE `python_test` CHARSET UTF8 导入数据库模块 import MySQLdb ...

    53 理解MVCC机制的前奏:undo log版本链是个什么东西?l.pdf

    在MySQL中,每条数据记录实际上都包含了两个隐藏字段:`trx_id`和`roll_pointer`。`trx_id`记录了最近一次更新该数据记录的事务ID,而`roll_pointer`则是一个指向undo log记录的指针,这个记录包含了该数据记录的前...

    JSP网站开发典型模块与实例精讲

    第1章 JSP开发前奏  1.1 JSP基于服务器模式的运行原理  1.1.1 JSP原理  1.1.2 为什么使用JSP  1.2 JSP轻量级开发和运行环境简介  1.2.1 JSP运行最佳环境Tomcat+MySQL  1.2.2 高效开发JSP的最佳搭配工具...

    VisualC++数据库开发典型模块与实例精讲.pdf_part1

    第1章VisualC++数据库开发前奏 1.1VisualC++6.0开发工具简介 1.2学好VisualC++6.0的建议 1.3常见数据库简介 1.4结构化查询语言(SQL)简介 1.5数据库开发常用技巧 1.6本章小结 第2章数据库访问技术及模块封装...

    VisualC++数据库开发典型模块与实例精讲.pdf_part2

    第1章VisualC++数据库开发前奏 1.1VisualC++6.0开发工具简介 1.2学好VisualC++6.0的建议 1.3常见数据库简介 1.4结构化查询语言(SQL)简介 1.5数据库开发常用技巧 1.6本章小结 第2章数据库访问技术及模块封装...

    JAVA WEB开发实战经典PPT part1

    9. **数据库基础**:MySQL或其他关系型数据库的基本操作,如SQL查询语句、连接池的使用等,是Web开发中的基础技能。 10. **工具和框架介绍**:可能简要介绍Maven或Gradle等构建工具,以及Spring Boot、MyBatis等...

    python网络爬虫 内部有云盘链接

    - SQL数据库(MySQL、SQLite等):适合结构化数据。 - NoSQL数据库(MongoDB等):适合非结构化数据。 3. **云存储服务**:如阿里云OSS、腾讯云COS等,适合大数据量且需远程访问的情况。 #### 五、爬虫进阶 1. *...

Global site tag (gtag.js) - Google Analytics