为什么 MySQL 服务器软件如此庞大?

111*_*111 1 mysql

为什么 MySQL 服务器软件比 SQLite 更大(大小)?是什么让它这么大?不只是一些用于保存表格及其条目的网络协议和代码吗?

SQLite 与 MySQL 使用相同的语言,只有 300kb 的库,但 MySQL Server 的大小约为 600mb。

Vér*_*ace 9

考虑到 MySQL 有 31MB 的源代码下载。PostgreSQL 有一个 16MB 的源代码下载。SQLite 有一个 1.45MB 的源代码下载 - 请至少先比较 like 和 like - 比较 300K 和 600 MB 是不公平的!

虽然 SQLite 确实可以做得更小,但也可以用 MySQL 做同样的事情——有一个嵌入式版本(我从未使用过它,所以不能说它的大小)。

MySQL 还附带了一堆实用程序(例如用于备份和检查完整性,还有更多 - 没有一个方便的运行系统来完成所有这些)。

此外,MySQL 支持一堆存储引擎——SQLite 不支持。

现在最重要的是 - MySQL 支持并发更新 - SQLite 不支持。正如 D. Richard Hipp 自己所说,“SQLite 不是为了与 Oracle 竞争而设计的。SQLite 是为了与 fopen() 竞争而设计的”。

我认为他很谦虚——他在 SQLite 方面的成就令人印象深刻——但它不是一个多用户 RDBMS。MySQL 肯定可以在 Oracle 所涉足的许多领域竞争,而 SQLite 永远无法做到这一点 - 您能想象在没有并发更新的情况下运行电信系统吗?只是我的 0.02c。

[编辑以回应@jynus 的评论]

是的,确实,这些数字非常有趣。

  • SQLite 212,680 行代码
  • PostgreSQL 727,260 行代码
  • MySQL 2,380,079 行代码

因为它们都是用 C/C++ 编写的,所以它的大小比较比下载的 MB 更公平。

梳理出这些“代码行”数字对应的内容会更有趣。

即有人会问为什么 SQLite 具有它在 MySQL 代码库的 1/10 上所做的广泛功能?

或者为什么 PostgreSQL 比 MySQL 更胜任 RDBMS 的 1/3 代码?

和/或 MySQL 源代码行数中包含多少客户端工具和其他各种“绒毛”?

此外,考虑到 C++ 应该比 C 每行封装更多的功能,这表明 MySQL 代码的“效率”更低(通过粗略的代码行度量)。

(顺便说一句,我们说话的时候我正在穿上阻燃服!:-))

很好的讨论话题——虽然不知道会持续多久,但更遗憾的是!