Most/Typical 数据库使用 Stdio 吗?
Do Most/Typical Databases Use Stdio?
我在任何地方都找不到任何文档或任何可以回答我问题的东西。像postgres或mysql之类的rdbms是否像普通文件一样使用c库写入数据?
或者他们只是试图获取原始磁盘内存 space 地址位置并写入其中?当然不是,因为 linux 内核不允许这样做。当然,内核上下文切换和内存所有权模型会减慢数据库事务。
我很好奇这在引擎盖下是什么样子。
MySQL 和 PostgreSQL 都是 open-source。你可以自己查一下。
https://github.com/mysql/mysql-server/blob/5.7/include/my_global.h#L53
#include <stdio.h>
https://github.com/postgres/postgres/blob/master/src/include/c.h#L59
#include <stdio.h>
MySQL 有一项功能可以做 raw I/O directly to disk partitions。但是对于现代文件系统,这是否有很大好处值得怀疑。我从未处理过以这种方式配置的 MySQL 实例。
我在任何地方都找不到任何文档或任何可以回答我问题的东西。像postgres或mysql之类的rdbms是否像普通文件一样使用c库写入数据?
或者他们只是试图获取原始磁盘内存 space 地址位置并写入其中?当然不是,因为 linux 内核不允许这样做。当然,内核上下文切换和内存所有权模型会减慢数据库事务。
我很好奇这在引擎盖下是什么样子。
MySQL 和 PostgreSQL 都是 open-source。你可以自己查一下。
https://github.com/mysql/mysql-server/blob/5.7/include/my_global.h#L53
#include <stdio.h>
https://github.com/postgres/postgres/blob/master/src/include/c.h#L59
#include <stdio.h>
MySQL 有一项功能可以做 raw I/O directly to disk partitions。但是对于现代文件系统,这是否有很大好处值得怀疑。我从未处理过以这种方式配置的 MySQL 实例。