1.一条SQL的诞生首先需要通过某种方式传递给数据库。数据库会有一个客户端用来与外界交流,而作为提交SQL的一方,可以通过ODBC或者是JDBC协议直接将SQL提交给数据库,除此以外,还可以通过Web服务等第三方服务将SQL提交给数据库。
2.数据库接受SQL语句后,会根据现有的情况预先计算相应的算力,决定是不是应该立即执行这条SQL以及是否有足够的资源执行完这句SQL。一般这个任务被称为“Process Manager”。
3.当这条SQL获得相应的算力后,SQL就会开始进行计算了,首先会调用语句处理器,检查调用者是否有足够权限执行这条SQL,接下来编译这条SQL文本成内部执行计划。内部执行计划会包含各种“算子”,例如聚合,投影,选择以及join。
4.在执行计划中会存在很多算子,这时需要一个事务处理器帮忙决定数据的增删改查。存储系统会包含数据以及相应的数据结构和算法,决定着缓存和磁盘数据的平衡。事务处理除了管控数据外,还需要保证数据库的“ACID”性质,并行处理数据时给数据上锁,确保数据被正确写入磁盘。
5.此时的SQL已经获得了数据并且开始相应的计算,返回相应的结果给调用者。