MySQL-逻辑架构和存储引擎

前言

本文纪录了MySQL的逻辑架构和MySQL执行流程,开启show_profile查看执行计划,MyISAM和InnoDB对比,以及group by使用原则。

逻辑架构

MySQL系统架构图

系统架构图

MySQL逻辑架构图

逻辑架构图

show_profile执行周期

  • 修改配置

    # 修改配置文件/etc/my.cf,新增一行,开启缓存,0表示关闭,1表示打开
    query_cache_type=1
    
    # 重启mysql
    systemctl restart mysqld
    
    # 查看mysql启动状态
    systemctl status mysqld
    
  • 开启profiling

    # 先查看profiling状态
    mysql> show variables like '%profiling%';
    
    # 开启profiling
    mysql> set profiling =1;
    
  • 查看执行周期

    # 执行一条sql,然后可以查看执行计划。
    mysql> select * from mytbl2 where id =2;
    mysql> show profiles ;
    mysql> show profile cpu ,block io for query Query_ID;
    
  • sql执行顺序

    select distinct 
            <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>
    
  • 总结
    多次执行相同sql时,查询缓存中的数据。只能是相同sql,因为类似redis存储的是键值对。

存储引擎

  • 查看数据库引擎

    mysql> show engines;
    
  • MyISAM和InnoDB对比

    对比项MyISAMInnoDB
    外键不支持支持
    事务不支持支持
    行表锁表锁,即使操作一条纪录也会锁住整个表,不适合高并发操作行锁,操作时只锁定某一行,不对其他行有影响
    缓存只缓存索引,不缓存真是数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定行的影响
    关注点节省资源、消耗少、简单业务并发写、事务、更大资源
    默认安装YY
    默认使用YY
    自带系统表使用YN

其他配置

  • 建表

    create table mytbl2 (id int,name varchar(200), age int ,dept int);
    insert into mytbl2 values (1,'zhang3',33,101);
    insert into mytbl2 values (2,'li4',34,101);
    insert into mytbl2 values (3,'wang5',34,102);
    insert into mytbl2 values (4,'zhao6',34,102);
    insert into mytbl2 values (5,'tian7',36,102);
    
    # 错误查询
    SELECT name, dept, max(age) from mytbl2 group by dept;
    # 正确查询
    select * from mytbl2 m inner join (
    select dept, max(age) maxage from mytbl2 group by dept
    ) ab on ab.dept = m.dept and m.age=ab.maxage;
    

    group by使用原则:select后面只能放函数和group by后相关的字段

  • 查看sql_mode

    show variables like 'sql_mode';
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值