SELECT * FROM tb1 JOIN tb2 USING(ID) WHERE tb1.a=1 and tb2.a=2;
那就有两种方法可以选择:
- 第一种 , 先取表 tb1 里 a=1 的记录的ID值 , 再根据 ID 关联表 tb2 , 然后再判断 tb2 里面 a 的值是否等于 2
- 第二种 , 先取表 tb2 里面的 a=2 记录的 ID 值 , 在根据 ID 值关联 tb1 , 再判断 tb1 里面 a 的值是否等于 10
Ⅳ.Caches & Buffers:查询缓存组件GreatSQL 内部维持着一些 Cache 和 Buffer , 比如 Query Cache 用来缓存一条 SELECT 语句的执行结果 , 如果能够在其中找到对应的查询结果 , 那么就不必再进行查询解析、优化和执行的整个过程了 , 直接将结果反馈给客户端 。
但是在 GreatSQL 8.0 版本及以上中删除了查询缓存功能,因为查询缓存必须要两条SQL语句完全一模一样 , 否则是不能触发查询缓存 , 非常的鸡肋~
三、引擎层(Storage Engines)Ⅰ.存储引擎层真正的负责了 GreatSQL 中数据的存储和提取 , 对物理服务器级别维护的底层数据执行操作 , 服务器通过API与存储引擎进行通信 。
存储引擎的优势在于 , 各式各样的存储引擎都具备独特的特性 , 从而能够针对特定的应用需求建立不同存储引擎表 。
GreatSQL 支持的存储引擎如下:
greatsql> SHOW ENGINES;+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+| Engine 引擎名称 | Support 支持情况 | Comment 引擎的说明| Transactions 事务支持 | XA 分布式事务支持| Savepoints 保存点 |+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+| FEDERATED| NO| Federated MySQL storage engine| NULL| NULL | NULL|| PERFORMANCE_SCHEMA | YES| Performance Schema| NO| NO| NO|| InnoDB| DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES| YES| YES|| MEMORY| YES| Hash based, stored in memory, useful for temporary tables| NO| NO| NO|| MyISAM| YES| MyISAM storage engine| NO| NO| NO|| MRG_MYISAM| YES| Collection of identical MyISAM tables| NO| NO| NO|| BLACKHOLE| YES| /dev/null storage engine (anything you write to it disAppears)| NO| NO| NO|| CSV| YES| CSV storage engine| NO| NO| NO|| ARCHIVE| YES| Archive storage engine| NO| NO| NO|+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+9 rows in set (0.00 sec)
得益于 GreatSQL 数据库的开源特性 , 用户得以依据存储引擎接口自行编写个性化的存储引擎 。当对某一种存储引擎的性能或功能存有疑虑时 , 可通过优化代码实现所需特性 , 这正展示了开源所赋予我们的便捷与力量 。Ⅱ.存储层所有的数据 , 数据库、表的定义 , 表的每一行的内容 , 索引 , 都是存在 文件系统上 , 以文件的方式存在的 , 并完成与存储引擎的交互 。当然有些存储引擎比如InnoDB , 也支持不使用文件系统直接管理裸设备 , 但现代文件系统的实现使得这样做没有必要了 。在文件系统之下 , 可以使用本地磁盘 , 可以使用DAS、NAS、SAN等各种存储系统 。
总结所以可以把 GreatSQL 的架构图简化如下:
文章插图
图片
要把架构图牢牢记住 , 对于以后深入理解 GreatSQL 数据库会有极大帮助!
推荐阅读
- 江疏影的穿搭灵感,服装搭配和妆容的完美结合,时尚又潮流
- 图文 GQ上海红毯:杨颖金发怪异,李沁妆造尴尬,杨幂高开叉好性感
- 值得与Python结合使用的五个新颖的数据科学工具
- 葫芦|翡翠葫芦解锁幸运,传统与现代的完美结合
- 郝刚|中铁三局董事长郝刚和年轻女子牵手、搂腰,中铁三局:图文虚假
- 图文转换技巧 图文自由转
- 结合使用React和其他技术的七种方法
- 三傻大闹宝莱坞情节结合
- QQ批量删除好友的图文教程
- 《暗黑破坏神4》图文攻略百科 全流程全支线全地城事件及莉莉丝雕像收集