1. 程式人生 > >Qt連線MySQL程式設計及資料庫效能調優(一)

Qt連線MySQL程式設計及資料庫效能調優(一)

之前整理過一篇Qt下資料庫程式設計基礎 :最近在進行單元測試,所以把遇到的一些問題整理出來,主要是關於資料庫的

1.遠端連線資料庫

連線語句是: mysql -h 192.168.xx.xx(IP地址) -P 3306(埠) -u remoteuser(登入使用者名稱) -p(按回車輸入密碼)。 在連線之前首先要在遠端配置一下,我使用的是新增授權使用者的方法: 下面是允許任意ip地址進行連線,使用者名稱:remoteuser,密碼:password: mysql>GRANT ALL PRIVILEGES ON . TO ‘remoteuser’@’%'IDENTIFIED BY ‘password’ WITH GRANT OPTION; 下面是指定ip為192.168.10.33的主機才能連線到mysql伺服器:

mysql>GRANT ALL PRIVILEGES ON . TO ‘myuser’@'192.168.10.33’IDENTIFIED BY ‘password’ WITH GRANT OPTION; 使授權生效: mysql>FLUSH PRIVILEGES 可以參考這篇講遠端連線資料庫的文章。 這些都做好之後還要注意一點防火牆相關的問題,我把MySQL布在了Linux系統上,剛開始的時候試了重啟資料庫都提示無法連線,後來發現是自己的防火牆沒有設定,下面是防火牆的設定: sudo ufw allow 3306 (允許外部訪問3306埠) sudo ufw enable(開啟防火牆) sudo ufw default deny(禁止外部訪問) sudo ufw status(檢視防火牆狀態) 之後再連線就可以了。

2.插入資料速度優化

用Qt編寫的插入介面是用的QSqlTableModel,每插入一條資料就進行一次提交,剛開始的時候覺得不會有太大問題,但測試的時候發現插入一條資料大概要40ms的樣子,這樣顯然是不夠的,於是查了資料,說是要用事務,於是改成先transaction後commit,插入資料也換成了用SQL語句的方法,發現速度並沒有快多少,於是又查了資料庫相關的資料,發現由於用的是InnoDB引擎,預設是會autocommit的,所以速度才沒什麼提升,所以在配置檔案里加了一句autocommit = 0。速度馬上就提上去了。但使用autocommit比較麻煩的一點在於,你需要自己手動去使用commit語句,千萬不要忘記,不然資料是寫不進去的。詳見

這篇文章