首頁 > 軟體

MySql連線資料庫常用引數及程式碼解讀

2023-09-07 10:06:43

MySql連線資料庫常用引數及程式碼

常用引數

引數名稱引數說明預設值最低版本要求
user資料庫使用者名稱(用於連線資料庫)
password使用者密碼(用於連線資料庫)
useUnicode是否使用Unicode字元集,如果引數characterEncoding設定為gb2312或gbk,本引數值必須設定為truefalse1.1g
characterEncoding當useUnicode設定為true時,指定字元編碼。比如可設定為gb2312或gbkfalse1.1g
autoReconnect當資料庫連線異常中斷時,是否自動重新連線?false1.1
autoReconnectForPools是否使用針對資料庫連線池的重連策略false3.1.3
failOverReadOnly自動重連成功後,連線是否設定為唯讀?true3.0.12
maxReconnectsautoReconnect設定為true時,重試連線的次數31.1
initialTimeoutautoReconnect設定為true時,兩次重連之間的時間間隔,單位:秒21.1
connectTimeout和資料庫伺服器建立socket連線時的超時,單位:毫秒。 0表示永不超時,適用於JDK 1.4及更高版本03.0.1
socketTimeoutsocket操作(讀寫)超時,單位:毫秒。 0表示永不超時03.0.1
allowMultiQueriesmysql驅動開啟批次執行sql的開關false

資料庫工具類

package util;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * 資料庫工具類
 * @author Administrator
 *
 */
public class DbUtil {

    private String dbUrl="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true";
    private String dbUserName="root";
    private String dbPassword="passwd";
    private String jdbcName="com.mysql.jdbc.Driver";
    
    /**
     * 獲取資料庫連線
     * @return
     * @throws Exception
     */
    public Connection getCon() throws Exception{
        Class.forName(jdbcName);
        Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);
        return con;
    }
    
    /**
     * 關閉資料庫連線
     * @param con
     * @throws Exception
     */
    public void closeCon(Connection con) throws Exception{
        if(con!=null){
            con.close();
        }
    }
    
    public static void main(String[] args) {
        DbUtil dbUtil=new DbUtil();
        try {
            dbUtil.getCon();
            System.out.println("資料庫連線成功");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

呼叫該工具類時

    Connection con=null;
    try{
            con=dbUtil.getCon();
            (資料庫操作語句)
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

MySql常用引數

引數名稱引數說明參考
max_connections資料庫的最大連線數MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
wait_timeout非互動模式的沒有操作後的超時秒數,超時後資料庫會關閉該連線。MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
interactive_timeout互動模式下的沒有操作後的超時時間,一般與wait_timeout的值一致MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
max_prepared_stmt_count限制一個session內最多可以有多少條預編譯語句MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
innodb_lock_wait_timeout等待資料鎖的超時時間預設50s,超時則回滾當前事務,可以設定適當的時長作為避免死鎖的一種措施MySQL :: MySQL 8.0 Reference Manual :: 15.14 InnoDB Startup Options and System Variables
max_allowed_packet伺服器和客戶之間單次通訊的大小上限,會限制Server接受的封包大小。MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
slow_query_log是否開啟慢紀錄檔 0關閉, 1開啟MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
long_query_time如果開啟了慢紀錄檔,則sql查詢時間超過該值就記錄到慢紀錄檔MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
innodb_flush_log_at_trx_commit控制提交操作的嚴格ACID合規性與在批次重新安排和完成提交相關I/O操作時可能實現的更高效能之間的平衡。
完全符合ACID要求需要預設設定1。紀錄檔在每次事務提交時寫入並重新整理到磁碟。
設定為0時,紀錄檔每秒寫入並重新整理到磁碟一次。未重新整理紀錄檔的事務可能會在崩潰中丟失。
設定為2時,紀錄檔在每次事務提交後寫入,並每秒重新整理一次到磁碟。未重新整理紀錄檔的事務可能會在崩潰中丟失。
MySQL :: MySQL 8.0 Reference Manual :: 15.14 InnoDB Startup Options and System Variables
sync_binlog控制MySQL伺服器將二進位制紀錄檔同步到磁碟的頻率。
sync_binlog=0:禁用MySQL伺服器將二進位制紀錄檔同步到磁碟。
sync_binlog=1:啟用在提交事務之前將二進位制紀錄檔同步到磁碟。
sync_binlog=其他數位,表示在收集N個二進位制紀錄檔提交組後,二進位制紀錄檔將同步到磁碟。
MySQL :: MySQL 8.0 Reference Manual :: 17.1.6.4 Binary Logging Options and Variables
innodb_buffer_pool_instancesInnoDB緩衝池劃分的區域數。僅在緩衝區大於1G時生效,預設為8MySQL :: MySQL 8.0 Reference Manual :: 15.14 InnoDB Startup Options and System Variables
innodb_buffer_pool_chunk_size緩衝池的塊大小(位元組)預設128MMySQL :: MySQL 8.0 Reference Manual :: 15.14 InnoDB Startup Options and System Variables
innodb_buffer_pool_size緩衝池的大小(位元組),InnoDB快取表和索引資料的記憶體區域。緩衝池大小必須始終等於或是innodb_Buffer_pool_chunk_size*innodb_buffer_pool_instances的倍數MySQL :: MySQL 8.0 Reference Manual :: 15.14 InnoDB Startup Options and System Variables

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com