目錄
一.插入數據優化
1.insert語句優化
①批量插入
②手動提交事務
③主鍵順序插入
2.大批量插入數據(100萬條)
舉例
第一步:連接數據庫時,加上--local-infile屬性
第二步:查看全局參數local_infile的值,如果為0,則需要設置為1
第三步:根據領導給的表結構sql文件,創建表結構
第四步:將領導給的包含100w條數據的sql文件,傳入linux虛擬機上
第五步:執行load語句,將100萬條數據,從該文件中導入tb_user表中
一.插入數據優化
1.insert語句優化
對于insert語句的方式插入數據,可以從下面三種角度進行insert語句的優化
①批量插入
我們可以一個insert語句,插入多行數據,而不是一個insert語句只插入一行數據。
比如我們數據庫需要100條數據,我們可以每個insert語句插入10條數據,寫10個insert語句即可。
②手動提交事務
每執行一條insert語句前/后,都會自動開啟/提交事務。
比如執行3條insert語句,就會開啟3次事務,提交3次事務,很頻繁。
因此我們可以在執行insert語句前,開啟事務,等到所有insert語句執行完畢后,再統一提交事務即可。
③主鍵順序插入
我們使用insert語句插入數據時,可以按照每行數據的主鍵從小到大插入,這樣性能比較好。
2.大批量插入數據(100萬條)
舉例
需求場景:在公司,領導給你一個包含100萬條數據的sql文件和一個表結構sql文件,讓你給這100萬條數據導入數據庫,你如何做?做法如下。
第一步:連接數據庫時,加上--local-infile屬性
第二步:查看全局參數local_infile的值,如果為0,則需要設置為1
第三步:根據領導給的表結構sql文件,創建表結構
CREATE TABLE `tb_user` (`id` INT(11) NOT NULL AUTO_INCREMENT,`username` VARCHAR(50) NOT NULL,`password` VARCHAR(50) NOT NULL,`name` VARCHAR(20) NOT NULL,`birthday` DATE DEFAULT NULL,`sex` CHAR(1) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `unique_user_username` (`username`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 ;
第四步:將領導給的包含100w條數據的sql文件,傳入linux虛擬機上
如下圖,可見該文件每一行用換行符\n分隔,每一個字段使用逗號分隔,一共100w條數據。
第五步:執行load語句,將100萬條數據,從該文件中導入tb_user表中
load data local infile '/root/load_user_100w_sort.sql' into table tb_user fields terminated by ',' lines terminated by '\n';
解讀:以上橙色是數據文件在linux磁盤上的位置;紫色是數據庫表的名稱;藍色是每一個字段的分隔符;紅色是每一行的分隔符。
以上就是使用load語句,向表中導入100w條數據的全部過程。
喜歡本篇文章的話,可以留個免費的關注呦~