首页 > 数据库 > 国内数据库 > GBase 8s数据库虚拟处理器解析
很多刚接触南大通用GBase 8s数据库(gbase database)的同事,第一次听到 "虚拟处理器" 这个概念都会有点陌生。其实它就是数据库服务进程内部用来干活的执行单元,对应操作系统层面的一个线程。
传统数据库常见的做法是,每个客户端连接对应一个独立的服务进程。这种结构简单直接,但问题也明显:连接一多,操作系统就要频繁地在进程之间切换,每个进程还要单独占一套内存、通信端口和文件句柄,资源消耗很快就上来了。
南大通用GBase 8s数据库(gbase database)走的是另一条路。它用一组虚拟处理器统一处理所有客户端请求,多个线程跑在同一个进程里,共享同一份代码和内存里的数据、共享处理队列。好处直接体现在两点:一是内存和系统资源占用低,几百个客户端连接下去,数据库服务器只需要少量几个服务进程就能扛住;二是线程切换比进程切换快得多,操作系统不需要反复保存和恢复整套进程上下文,数据库自身在不同线程之间切换的开销很小。
同一类虚拟处理器之间还能自动负载均衡。某个线程在这个 VP 上排队太久,数据库会自动把它挪到另一个空闲 VP 上跑,这个动作对数据库用户是完全透明的,业务侧感知不到。
理解这个架构的意义在于:后面看 GBase 8s 的性能问题、做参数调整时,思路就和传统 "一连接一进程" 的数据库不一样。它更像是数据库自己在进程内部做调度,而不是把调度完全交给操作系统。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3184015/ ,如需转载,请注明出处,否则将追究法律责任。