c语言mysql自动重连接_c++操作mysql数据库
就拿查詢MySQL獲取結果集并在頁面上顯示數據為例來分析. HTTP請求由C級別的程序比如Apache/Nginx處理(Java的HTTP服務用的是Java開發的Tomcat等), PHP則調用內置在PHP引擎的C開發的數據庫驅動mysqlnd(Java用的是Java開發的JDBC驅動)來操作MySQL, 查詢的邏輯這個重點都落在了C/C++開發的MySQL身上, 然后就是把返回結果集放到PHP數組, 經過字符串處理后在頁面輸出, 這些邏輯并不復雜, PHP負荷并不大. 值得注意的是, PHP內置的大量庫函數全部使用C實現, 而Java的核心運行時類庫rt.jar則是使用Java實現.在一些CLI下的壓力測試中,因為存在大量的循環,很容易就觸發Java的JIT熱點編譯,這時Java的計算性能上升到C的級別,這樣的測試結果只能說Java在計算上的性能碾壓動態解釋型弱類型的PHP,而不是在Web上.對比具有JIT的機制的HHVM和PHP7的性能也能說明這個問題,在bench.php這個計算腳本的壓力測試中,HHVM還是要比PHP7快1到2倍,但在WordPress等真實Web應用的測試中,HHVM和PHP7兩者的性能相近.PHP的運行模式要比Java健壯穩定得多,比如PHP-FPM是經典的多進程prefork模式,主進程會維持指定數量的工作進程數,可以設置工作進程在處理多少個請求后自動重啟.反觀Java多線程的Tomcat,除了內存膨脹,代碼稍有不慎,就有可能讓Tomcat崩潰退出,拋出一大堆的錯誤信息.PHP開啟ZendOpcache后,可以把腳本生成的opcode緩存到內存形成opcache供下次請求直接在ZendVM上執行,能帶來一定的性能提升.PHP進程(PHP-FPM,Apache)可以和MySQL/Memcached/Redis建立持久連接,一個PHP進程保持一個MySQL持久連接,省去每次請求都建立連接的開銷.但需要注意PHP進程數不要超過MySQL最大連接數這一點,超時或重啟MySQL后PHP-FPM在代碼mysqli_connect時會自動重連,但會返回"MySQL server has gone away"的Warning信息,可以用@抑制錯誤輸出.PHP的熱部署特性大大方便了開發和運維,這點是Java等其他語言(包括RoR/Python/Node.JS)所不能媲美的.
總結
以上是生活随笔為你收集整理的c语言mysql自动重连接_c++操作mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle rdbms 占内存_027
- 下一篇: 【Python】反转列表 list 的几