在线excel表格助力企业高效管理与数据分析的未来趋势
566
2022-05-28
数据库优化法则归纳为5个层次:
1、 减少数据访问(减少磁盘访问)
2、 返回更少数据(减少网络传输或磁盘访问)
3、 减少交互次数(减少网络传输)
4、 减少服务器CPU开销(减少CPU及内存开销)
5、 利用更多资源(增加资源)
数据批量处理一般有两种情况(针对减少磁盘访问):
1、数据从一个数据库表A迁移到另一个数据库表B,这种情况可以每次取一定数量(例如:5条)进行批量插入。
语句如下:
在insert中写多个value
INSERT INTO table(field1,field2,field3)VALUES(‘a’,’b’,’c’),(‘a’,’b’,’c’),(‘a’,’b’,’c’),(‘a’,’b’,’c’),(‘a’,’b’,’c’);
2、数据是实时数据,比如服务器接收到的数据,数据可能在短时间有大量数据上传,也可能长时间没有,数据上传太快对与服务器的交互性能有较大的要求,如果可以批量插入,减少访问数据库,一次存入较多的数据,来提高服务器性能;
可以用vector或者其他合适的数据结构来临时存储数据,当达到预定设置的阈值时进行一次数据处理,比如vector.size>=5;
实现如下:
#include
typedef struct BIGINSERT
{
int strBooknumber;
CString strLocation;
}_biginsert_info;
typedef std::vector<_biginsert_info> Vecbigdatainsert;
_batch_info bigdatainsert;
Vecbigdatainsert vectordata;
Bigdatainsert.strBooknumber = //上传的数据
Bigdatainsert.strLocation = //上传的数据
//存入容器中
vectordata.push_back(Bigdatainsert);
int itSize = vectordata.size();
if(itSize >= 5)
{
int j = 0;
CString str1;
str1.Format("%s","(’%d’,’%s’)");
CString cstrdata[100];
CString strTemp = “”;
for(Vecbigdatainsert::iterator it = vectordata.begin();it !=vectordata.end();
it++)
1
{
cstrdata[j].Format("('%d','%s')",it->strBooknumber,it->strLocation); CString csData = cstrdata[j]; if(j == itSize-1)
1
2
3
4
5
6
{
strinsert+= csData; break; } else { strinsert+= csData; strinsert+=","; j++; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
}
//释放
vectordata.swap(vector<_biginsert_info>());
INSERT INTO table (field1,field2) VALUES %s",strinsert);
数据库
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。