需要在mysql中插入2000萬條記錄,用insert語句插入速度很有限,每秒鐘幾百條,放在hadoop集群上跑也是這個速度,可能是資料庫的問題了,網上看到sql server和oracle的insert速度也不是很快。比較簡單的優化方法如下:
1、在一條insert語句中插入多條記錄
insert into tablename (field0, field1, ...) values
(value0, value1, ...),
(value0, value1, ...),
(value0, value1, ...),
...(value0, value1, ...)
這樣插入速度可以提高很多倍,但還是不夠塊,對於2000萬條記錄,每秒鐘一兩千條的插入速度還是太慢。
2、從文字檔案匯入資料
mysql可以從文字檔案直接匯入記錄,不過需要文字檔案是行記錄,並且每個字段之間用相同的字元隔開、每行之間也用相同的字元隔開。
mysql> load data local infile 'filename' into table 'tablename' fields terminated by '\t' lines terminated by '\n';
其中'\t'和'\n'分別是字段和行的分隔符,在不同的情況下可能不一樣。
用這種方式,感覺匯入的速度主要和檔案的大小有關,和記錄的條數關係不太(可能是2000萬的記錄還不夠多吧。。)
匯入乙個800mb的文字檔案(2000萬行),在單機上預處理用了3分鐘,匯入資料庫用了7分鐘(機器配置是i5-2400cpu、8gb記憶體、硬碟讀取速度大約90mb/s)
下面還要處理乙個11gb的文字檔案,這回估計要用集群跑了。
提高MySQL插入記錄的速度
在myisam engine下 1.盡量使用insert into table name values 這樣形式插入資料,避免使用inset into table name values inset into table name values inset into table name value...
mysql技巧 提高插入資料 新增記錄 的速度
問題描述 普通台式電腦,採集資料,1000萬資料量。採集回來的資料插入表中的時候很慢,每條約100毫秒。解決方法 1 加大mysql配置中的bulk insert buffer size,這個引數預設為8m bulk insert程式設計客棧 buf 2 改寫所有insert語句為insert de...
提高mysql資料查詢速度
1,建立索引 2,盡量避免在 where 子句中使用 或 操作符,否則將引擎放棄使用索引而進行全表掃瞄。3,盡量避免在 where 子句中使用 or 來連線條件,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num 10 or num 20 可以這樣查詢...