27.6 libmysqld,嵌入式 MySQL 服务器库

嵌入式 MySQL 服务器库使在 Client 端应用程序中运行功能全面的 MySQL 服务器成为可能。主要优点是可以提高速度,并简化嵌入式应用程序的 Management。

Note

从 MySQL 5.7.19 开始不推荐使用libmysqld嵌入式服务器库,并将在 MySQL 8.0 中将其删除。

嵌入式服务器库基于 MySQL 的 Client 端/服务器版本,该版本使用 C/C 编写。因此,嵌入式服务器也用 C/C 编写。没有其他语言的嵌入式服务器。

该 API 与嵌入式 MySQL 版本和 Client 端/服务器版本相同。要将线程化的应用程序更改为使用嵌入式库,通常只需添加对以下函数的调用。

table27.2 MySQL 嵌入式服务器库功能

Function什么时候打电话
mysql_library_init()在调用任何其他 MySQL 函数之前(最好在main()函数的早期)调用它。
mysql_library_end()在程序退出之前调用它。
mysql_thread_init()在您创建的访问 MySQL 的每个线程中调用它。
mysql_thread_end()在致电pthread_exit()之前先呼叫它。

然后,将您的代码与libmysqld.a而不是libmysqlclient.a链接。为了确保您的应用程序和服务器库之间的二进制兼容性,请始终针对用于编译服务器库的同一系列 MySQL 的 Headers 编译应用程序。例如,如果libmysqld是针对 MySQL 5.6Headers 编译的,则不要针对 MySQL 5.7Headers 编译应用程序,反之亦然。

由于libmysqlclient.a中还包含mysql_library_xxx()函数,因此只需将应用程序与正确的库链接即可在嵌入式版本和 Client 端/服务器版本之间进行更改。参见第 27.7.6.41 节“ mysql_library_init()”

嵌入式服务器和独立服务器之间的区别是,对于嵌入式服务器,默认情况下禁用连接身份验证。