• Mysql优化一


    Mysql优化一

    一、存储引擎

    1.查看所有引擎

    SHOW ENGINES;
    

    2.查看默认存储引擎

    show VARIABLES LIKE '%STORAGE_engine%';
    

    3.MyISAM和InnoDB

    对比项 MyISAM InnoDB
    主外键 不支持 支持
    事务 不支持 支持
    行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其他行有影响,适合高并发的操作
    缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存的要求较高,而且内存的大小对其性能有决定性的影响
    表空间
    关注点 性能 事务
    默认安装 YES YES

    二、SQL执行加载顺序

    From left_table
    on join_condition
    <join_type> join right_table
    where where_condition
    group by group_condition
    having having_condition
    select
    distinct select_list
    order by orderBy_condtion
    limit limit_num
    

    三、索引

    1.定义

    索引是帮助Mysql高效获取数据的数据结构。——>本质:数据结构。

    其目的在于提高查询效率,可以类比于字典,可以简单理解为排好序的快速查找数据结构

    数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。

    通常说的索引如果没有特别指明,说的都是B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引、次要索引、覆盖索引、复合索引、前缀索引、唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈希索引等

    索引会影响到查找和排序

    一般来说索引也很大,不可能全部存储在内存中,因此索引往往以索引文件的方式存储在磁盘上。

    2.特点

    优点:提高数据检索的效率,降低了数据库的IO成本。

    ​ 通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗。

    缺点:实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引也是占用空间的。

    ​ 虽然其大大调高了查询速度,同时却会降低更新表的速度。因为更新表时不仅要保存数据,还要保存一下 索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息。

    ​ 索引只是提高效率的一个因素,如果你的数据库拥有大量的表,就需要花时间研究建立最优秀的索引,或 优化查询。

    3.分类

    • 单值索引

      一个索引只包含单个列,一个表可以有多个单值索引。

    • 唯一索引

      索引列的值必须唯一,但允许有空值

    • 复合索引

      一个索引包含了多个列

    4.基本语法

    创建:UNIQUE是唯一索引, columnname只有一个是单值索引,有多个为复合索引

    CREATE [UNIQUE] INDEX indexname on tablename(columnname1, columnname2...)
    or
    ALERT tablename add [UNIQUE] INDEX [indexname] on (columnname1, columnname2...)
    

    删除:

    DROP INDEX [indexname] on tablename
    

    查看

    SHOW INDEX FROM tablename
    

    5.适合建立索引的情况

    1. 主键自动建立唯一索引
    2. 频繁作为查询条件的字段应该创建索引
    3. 查询中与其他表关联的字段,外键关系建立索引
    4. 查询中排序的字段,排序字段若通过索引去访问,将大大提高排序速度
    5. 单键/组合索引的选择问题(高并发适合创建组合索引)
    6. 查询中统计或分组的字段

    6.不适合创建索引的情况

    1. 频繁更新的字段

    2. where条件里用不到的字段

    3. 表记录太少

    4. 数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据建立索引

      索引的选择性=不同的数目/总数目

  • 相关阅读:
    利用单臂路由实现VLAN间路由
    理解Hybrid接口的应用
    配置Trunk接口
    VLAN 基础设置及Aceess接口
    NFS实现文件共享
    Apache服务(基于IP地址,主机名,端口号)
    使用Vsftpd服务(匿名访问模式、本地用户模式)
    移动端响应式js代码
    快速搜索匹配插件
    无缝滚动插件
  • 原文地址:https://www.cnblogs.com/ys1109/p/11792565.html
Copyright © 2020-2023  润新知