MySQL是一款開源的關系型數據庫管理系統,其主要由C和C++語言編寫而成。其源代碼中的main函數,負責啟動MySQL相關的服務進程。
int main(int argc, char **argv) { mysql_library_init(0, NULL, NULL); thd_scheduler_init(); init_buffer(); init_sql_alloc(); ... /** 啟動功能模塊 **/ if (mysql_list_processes(thd)) { sql_print_error("mysql_list_processes failed"); } if (mysql_binlog_init()) { sql_print_error("mysql_binlog_init() failed"); } if (init_ps_thread(thd)) { sql_print_error("init_ps_thread() failed"); } ... /** 創建HTTP服務器 **/ create_httpd(&thd_ibuf, &thd_obuf, &static_request_handler); accept_http_connections(httpd); ... ... mysql_server_end(); exit(0); }
在源代碼中,我們可以看到MySQL使用了一個類似于惰性初始化的方式來啟動各個功能模塊。即在main函數中的代碼只是將各個功能模塊所需的資源分配好,但并不真正啟動這些功能模塊。當有用戶請求MySQL的某項功能時,MySQL才真正調用相應的初始化函數,去啟動該功能模塊。
另外,在main函數中MySQL還創建了一個HTTP服務器,用于處理HTTP請求。通過這個HTTP服務器,MySQL可以為用戶提供Web頁面式的數據庫管理界面,方便用戶管理數據庫。
總的來說,MySQL的源代碼中的main函數可以讓我們了解到,這個知名的關系型數據庫管理系統是如何啟動各個功能模塊的,并且可以通過HTTP服務器來提供便捷的數據庫管理方式。
下一篇css 模擬點擊事件