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()”。
嵌入式服务器和独立服务器之间的区别是,对于嵌入式服务器,默认情况下禁用连接身份验证。