当前位置:网站首页>输入的查询SQL语句,是如何执行的?
输入的查询SQL语句,是如何执行的?
2022-07-04 16:33:00 【InfoQ】
select * from where id ='1';
Server服务层
连接器
mysql -h$ip -P$port -u$user -p
- 如果用户名或密码不对,你就会收到一个“Access denied for user”的错误,然后客户端程序结束执行。
- 如果用户名密码认证通过,连接器会到权限表里面查出你拥有的权限。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限。
- 定期断开长连接。使用一段时间,或者程序里面判断执行过一个占用内存的大查询后,断开连接,之后要查询再重连。
- 如果你用的是 MySQL 5.7 或更新版本,可以在每次执行一个比较大的操作后,通过执行 mysql_reset_connection 来重新初始化连接资源。这个过程不需要重连和重新做权限验证,但是会将连接恢复到刚刚创建完时的状态。
查询缓存
mysql> select SQL_CACHE * from T where ID=10;
分析器
mysql> elect * from t where ID=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'elect * from t where ID=1' at line 1
优化器
- 选择最合适的索引;
- 选择表扫还是走索引;
- 选择表关联顺序;
- 优化 where 子句;
- 排除管理中无用表;
- 决定 order by 和 group by 是否走索引;
- 尝试使用 inner join 替换 outer join;
- 简化子查询,决定结果缓存;
执行器
mysql> select * from T where ID=10;
ERROR 1142 (42000): SELECT command denied to user 'b'@'localhost' for table 'T'
- 调用 InnoDB 引擎接口取这个表的第一行,判断 ID 值是不是 10,如果不是则跳过,如果是则将这行存在结果集中;
- 调用引擎接口取"下一行",重复相同的判断逻辑,直到取到这个表的最后一行。
- 执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。
存储引擎
InnoDB存储引擎
- 经常更新的表,适合处理多重并发的更新请求。
- 支持事务。
- 可以从灾难中恢复(通过bin-log日志等)。
- 外键约束。只有他支持外键。
- 支持自动增加列属性auto_increment。
MyISAM存储引擎
- 不支持事务的设计,但是并不代表着有事务操作的项目不能用MyISAM存储引擎,完全可以在程序层进行根据自己的业务需求进行相应的控制。
- 不支持外键的表设计。
- 查询速度很快,如果数据库insert和update的操作比较多的话比较适用。
- 整天 对表进行加锁的场景。
- MyISAM极度强调快速读取操作。
- MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择。
MySQL内建的其他存储引擎
Archive存储引擎
黑洞存储引擎
CSV存储引擎
Memory存储引擎
- 用于查找或者映射表,例如将邮箱和州名映射的表。
- 用于缓存周期性聚合数据的结果。
- 用于保存数据分析中产生的中间数据。
如何选择合适的存储引擎呢
- 事务
- 备份
- 恢复
- 特有的特性
其他查找引擎SQL
mysql> show variables like '%storage_engine%';
--查看表的存储引擎
show table status like "table_name" ;
边栏推荐
- Stars open stores, return, return, return
- [system analyst's road] Chapter 7 double disk system design (structured development method)
- 国产数据库TiDB初体验:简单易用,快速上手
- 【Hot100】31. Next spread
- 谷粒商城(一)
- DB-Engines 2022年7月数据库排行榜:Microsoft SQL Server 大涨,Oracle 大跌
- Superscalar processor design yaoyongbin Chapter 5 instruction set excerpt
- celebrate! Kelan sundb and Zhongchuang software complete the compatibility adaptation of seven products
- [proteus simulation] printf debugging output example based on VSM serial port
- 【每日一题】556. 下一个更大元素 III
猜你喜欢
The block:usdd has strong growth momentum
Superscalar processor design yaoyongbin Chapter 6 instruction decoding excerpt
Unity makes revolving door, sliding door, cabinet door drawer, click the effect of automatic door opening and closing, and automatically play the sound effect (with editor extension code)
Numpy 的仿制 2
I wrote a learning and practice tutorial for beginners!
ISO27001 certification process and 2022 subsidy policy summary
Solve the El input input box For number number input problem, this method can also be used to replace the problem of removing the arrow after type= "number"
Detectron2 installation method
78岁华科教授冲击IPO,丰年资本有望斩获数十倍回报
ISO27001认证办理流程及2022年补贴政策汇总
随机推荐
LD_LIBRARY_PATH 环境变量设置
Tutorial on the use of Huawei cloud modelarts (with detailed illustrations)
股价大跌、市值缩水,奈雪推出虚拟股票,深陷擦边球争议
Russia arena data releases PostgreSQL based products
SIGMOD’22 HiEngine论文解读
uni-app与uviewUI实现仿小米商城app(附源码)
With an estimated value of 90billion, the IPO of super chip is coming
Set the transparent hidden taskbar and full screen display of the form
2022年DCMM认证全国各地补贴政策汇总
You should know something about ci/cd
【Hot100】32. 最长有效括号
ISO27001 certification process and 2022 subsidy policy summary
General environmental instructions for the project
Once the "king of color TV", he sold pork before delisting
Analysis of I2C adapter driver of s5pv210 chip (i2c-s3c2410. C)
国产数据库TiDB初体验:简单易用,快速上手
Solve the El input input box For number number input problem, this method can also be used to replace the problem of removing the arrow after type= "number"
[cloud native] what is the "grid" of service grid?
Performance test of Gatling
Interview summary of large factory Daquan II