zoukankan      html  css  js  c++  java
  • @MySQL的存储引擎

    1.存储引擎

    查看MySQL提供了哪些存储引擎

    mysql> show engines;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
    | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
    | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
    | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
    | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)

    查看MySQL当前默认的存储引擎

    mysql> show variables like '%storage_engine%';
    +----------------------------+--------+
    | Variable_name              | Value  |
    +----------------------------+--------+
    | default_storage_engine     | InnoDB |
    | default_tmp_storage_engine | InnoDB |
    | storage_engine(当前存储引擎) | InnoDB |
    +----------------------------+--------+
    3 rows in set (0.00 sec)
    对比项
           MyISAM 
    InnoDB
    外键         不支持                               支持
    事务 不支持                            支持
    行表锁

    表锁,即使操作一条记录也会锁住整张表,

    不适合高并发的操作

    行锁,操作时只锁定某一行,不对其他的行有影响,

    适合高并发的操作

    缓存 只缓存索引,不缓存真实数据

    不仅缓存索引还缓存真实数据,对内存要求较高,

    而且内存大小对性能有决定性影响

    表空间                         小                               大
    关注点                       性能                                事务

    2.sql性能下降的原因

    1).查询语句写的烂。

    2).索引失效,可能常用的搜索字段没有建索引。

    3).关联查询太多的join。

    4).MySQL服务器调优及各个参数的设置(缓冲,线程数等)。

    3.sql的执行顺序

    手写的sql

    SELECT 
        <select_list>
    FROM 
        <left_table><join_type>
    JOIN <right_table> ON <join_condition>
    WHERE 
        <where_condition>
    GROUP BY
        <group_by_list>
    HAVING
        <having_condition>
    ORDER BY
        <order_by_condition>
    LIMIT <limit_number>

    MySQL是怎么读的呢?(从from开始读)

    FROM  <left_table>
    ON <join_condition>   
    <join_type> JOIN <right_table> 
    WHERE <where_condition>
    GROUP BY <group_by_list>
    HAVING <having_condition>
    SELECT <select_list>
    ORDER BY <order_by_condition>
    LIMIT <limit_number>

    WHERE和GROUP BY是一对哟~

  • 相关阅读:
    关于Windows 2000,IIS 5/4下面,Form内容超过200K解决办法!
    获取客户端网卡MAC地址和IP地址的几种方法
    关于Java的异常捕获
    redis的swap
    Linux下C++程序获取运行时间的一种方式
    CentOS 修改IP地址, DNS, 网关[内容来源网络]
    [转]ubuntu12.04搭建ruby on rails 环境
    rails环境 bundle 时无法安装nokogiri 完美解决
    SQL Server – 冷知识 (新手)
    Typescript – 学习笔记 tsconfig.json
  • 原文地址:https://www.cnblogs.com/winner-0715/p/6523732.html
Copyright © 2011-2022 走看看