MySQL通透详解架构设计


本文整理自网络,侵删。

系统只要能从数据库连接池获取到一个数据库连接,就能执行CRUD。可通过数据库连接将待执行SQL发给MySQL。

大部分 crud boy只知道:

  • 执行insert语句后,在表里会多条数据
  • 执行update后,会更改表数据
  • 执行delete后,会删除表里数据
  • 执行select后,会查询表里数据出来
  • 要是SQL性能丢人,建几个索引解决

这应该是目前行业内很多工程师对数据库的一个认知,完全当他是个黑盒来建表及执行SQL。

网络连接必须有线程处理

假设数据库服务器的连接池中的某个连接,接收到一条SQL网络请求,请思考:

  • 谁负责从这个连接中去监听网络请求?
  • 谁负责从网络连接里把请求数据读取出来?

网络连接得有一个线程来监听请求及读取请求数据,比如从网络连接中读取和解析出来一条业务系统发的SQL语句:

SQL接口

负责处理接收到的SQL语句。

MySQL的工作线程从一个网络连接中读出一个SQL语句后,会如何执行该SQL呢?

MySQL提供了SQL接口(SQL Interface),一套执行SQL语句的接口,专门执行业务系统发送的那些CRUD语句

因此MySQL的工作线程接收到SQL语句之后,就会转交给SQL接口去执行:

查询解析器

那SQL接口怎么执行SQL语句的?这玩意能懂这些SQL语句?

假设有如下SQL:

select id,name,age from users where id=1

这就需要查询解析器(Parser),负责解析SQL语句,比如对那个SQL拆解成:

  • 要从“users”表里查询数据
  • 查询“id”字段的值等于1的那行数据
  • 对查出来的那行数据要提取里面的“id,name,age”三字段

SQL解析也就是按SQL语法来解析SQL语句意欲何为:

查询优化器

通过解析器知道SQL要干啥了,然后就得找查询优化器(Optimizer)选择一个最优查询路径。

啥叫最优查询路径呢?

之前的那个SQL:从“users”表里查询数据,查“id”字段的值等于1的那行数据,对查出来的那行数据要提取里面的“id,name,age”三个字段。

阅读剩余部分

相关阅读 >>

mysql 的 21 个规范、优化最佳实践!

sqlserver使用 case when 解决多条件模糊查询问题

19个mysql性能优化要点解析

asp实现sql备份、恢复

mysql语句整理及汇总介绍

sql数据库删除数据如何恢复

sql server 2000安全配置详解

oracle使用sql语句增加字段示例(sql删除字段语句)

mysql中数据库优化的常见sql语句总结

mysql数据库入门之备份数据库操作详解

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...