Mariadb
如何在執行時間小於 max_statement_time 值的 mariadb 中插入大數據
我有一些具有這種結構的表。
CREATE TABLE `trcdmppdetail` ( `mpp_code` varchar(50) NOT NULL, `company_code` varchar(50) NOT NULL, `mppdetail_date` datetime(3) NOT NULL, `position_id` int(11) DEFAULT NULL, `basedon_code_1` varchar(50) NOT NULL, `basedon_code_2` varchar(50) NOT NULL, `mpp_emp` int(11) DEFAULT NULL, `actualemp_onrequest` int(11) DEFAULT NULL, `dept_id` int(11) NOT NULL, `created_date` datetime(3) DEFAULT NULL, `created_by` varchar(50) DEFAULT NULL, `modified_date` datetime(3) DEFAULT NULL, `modified_by` varchar(50) DEFAULT NULL, PRIMARY KEY (`mpp_code`,`company_code`,`mppdetail_date`,`basedon_code_1`,`basedon_code_2`,`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES `ENCRYPTION_KEY_ID`=3488
和全域變數的值
max_statement_time=60
我在那個表上插入了 50k 行數據,但我得到了錯誤,因為我的查詢執行超過了
max_statement_time
我的 dba 不能讓我更改全域變數,max_statement_time=0
因為他說會破壞伺服器。那麼如何插入執行時間小於
max_statement_time
值的數據。
不要更改
GLOBAL
設置;更改SESSION
設置。
一個解決方案可能是將您的
INSERT
語句拆分為多個語句。假設您正在使用
mariadb-dump
或使用該語句mysqldump
創建文件,您可以使用該標誌創建一個轉儲文件,其中包含表中的每行一個。雖然這將比單個語句導入更慢,但它不會遇到變數問題。INSERT``--skip-extended-insert``INSERT``max_statement_time
mysqldump --skip-extended-insert yourdatabase trcdmppdetail
如果
INSERT
語句來自應用程序,那麼我能想到的唯一方法是使用沒有max_statement_time
限制的中間 MariaDB 伺服器。mysqldump
如上所述使用從中介創建轉儲文件,您可以將其導入問題中的 MariaDB 伺服器。(安裝 MariaDB 伺服器很容易- 例如,它可以安裝在任何主要作業系統的筆記型電腦上,50K 行完全沒有問題。)