数据库执行原理

 

 

1. SQL执行过程:

  1) 客户端:如Navicat,idea内mapper/dao层调用的SQL语句;

  2) 服务器:也就是远程服务器;

  3) 连接器:如Navicat需要与mysql数据库连接。用户名权限等都需要连接器。

  4) 分析器:进行语法解析。
    词法分析器:把完整的SQL语句打碎成一个个单词;
    语法分析器:将词法分析的结果根据一定的规则生成一个数据结构,语法树。语法解析也是会解析格式的。
    预处理器:语法正确后,会对表名、字段等是否存在进行检测;

  5) 优化器:MySql自带优化器。优化器按照自己特定的规则进行优化;
    一条SQL语句执行的方式很多,最终返回的结果是相同的;优化器的目的是根据(语法解析的)解析树生成不同的执行计划,择优执行;


  简单的执行过程:SQL语句在客户端内写好,由服务器内来执行,执行SQL语句需要有连接器,再将SQL语句给到分析器,继而到优化器,优化完成后开始执行sql语句;执行SQL语句需要存储引擎;

 

  连接MySQL需要通信协议;
  6) 通信协议:(数据库)本地连接--socket;远程连接--TCP协议;

  7) 长链接与短链接:
      简单来说就是与服务器链接的长短;
      连接好后,执行SQL语句,关闭;
      短链接:连接-->数据传输-->关闭;查询:show global variables like 'wait_timeout'; -- 非交互式超时时间,如 JDBC 程序;
      长链接:连接-->数据传输-->保持连接-->数据传输-->保持连接-->..-->关闭连接;查询:show global variables like 'interactive_timeout'; -- 交互式超时时间,如数据库工具
      长连接与短连接都会有一定的时限自动关闭,默认8h;
   

 

  查看当前服务器的连接状态:show global status like 'Thread%';
  Thread_cached:线程缓存中的线程数;
  Thread_connected:当前打开的连接数;
  Thread_created:为处理连接而创建的线程数;
  Thread_running:未休眠的线程数;
  

   MySQL最大连接数:show variables like 'max_connections';
  
  默认151,最大为2的14次方16384;
  临时修改:set global max_connections = 1000;

  永久生效:修改/etc/my.cnf 文件(是MySQL配置文件)

  8) 缓存

      再次执行同一条SQL语句,就回去缓存查找;注意:语句必须一模一样,甚至字母大小写;表内任何一条数据有变化,缓存都会失效;
      版本8以后取消了此功能。
      
show variables like 'query_cache%'; 
  

 

  9) 存储引擎(索引结构):

      索引:帮助mysql高效获取数据的排好序的数据结构。
     关系型数据的类型是存在表里的,表在存储数据的同时会组织数据的存储结构;此结构是存储引擎决定的,而存储引擎也叫表类型;
     在MySQL内支持多种存储引擎,是可替换的,所以也叫插件式存储引擎。
     查看支持的存储引擎:show engines;

      
        MylSAM与InnoDB是最常见的;
  

       不同的存储引擎决定一张表在磁盘的类型,每个存储引擎都有一个frm文件,是表结构定义文件;
       查看文件存储地址:show engines;
  

  10) MylSAM:
        在MySQL版本5.5前,默认存储引擎是MylSAM,是MySQL自带的。建表时,不指定存储引擎,则会默认MylSAM为存储引擎。

        特点:

    • 应用范围小。表级锁限制了读/写的性能。
    • 通常用于只读或读为主的工作。
    • 支持表级锁(插入或更新时会锁表)。不支持事务。
    • 拥有较高的增(insert)与查(select)的速度。
    • 存储了表的行数(count速度更快)。
    • 当指定主键时,插入顺序与查询顺序是一致的。

      表级锁:操作数据库时,将整个表都锁柱,不能操作表内任何数据;
      行级锁:操作数据库时,将整行数据锁住,不能错做被锁住的行内数据;

  11) InnoDB:
        MySQL5.7的默认引擎。InnoDB是一个事务安全的(与ACID兼容),使得MySQL默认引擎具有提交、回滚和崩溃恢复功能保护用户数据。
        InnoDB行级锁和Oracle的风格一致。

   特点:

    • 支持事务、支持外键,故数据的完整性、一致性更高;
    • 支持行级锁和表级锁;
    • 支持读写并发,写不阻塞读(MVCC);
    • 特殊的索引存放方式,可减少io,提升查询效率;
    • 当指定主键时,插入顺序与查询顺序不一致;插入数据时,InnoDB会根据主键进行排序;


    用于:经常更新的表,存在并发读写或有事务处理的业务系统。

 

 

 

 

 


  

 

 

posted @   学Java的`Bei  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示