Chinaunix

标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验 [打印本页]

作者: harry_li    时间: 2004-08-11 11:33
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
环境:redhat9.0+c+postgresql.请教各位你们是怎么连接数据库,插入数据的?总不可能插入一条数据就要连接一次数据库吧.还有,C语言有没有像java里面的数据库连接池的啊?请大家介绍一下这方面的经验.因为我现在需要一次插入几千条数据.
作者: FH    时间: 2004-08-11 11:54
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
上来就连,然后不停插入就是了。
更高的效率取决于各数据库实现的特殊技术,没有可移植性。
作者: harry_li    时间: 2004-08-11 12:05
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
哦,没有连接池技术?
作者: FH    时间: 2004-08-11 12:27
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
连接池可以自己写啊,很简单的东西,超不过100行的。
作者: JohnBull    时间: 2004-08-11 22:40
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
楼主说说,一次插入几千条数据,使用连接池有什么好处?
作者: windflowers1976    时间: 2004-08-12 07:57
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
[quote]原帖由 "JohnBull"]楼主说说,一次插入几千条数据,使用连接池有什么好处?[/quote 发表:


两者没关系。数据库连接池只能说解决每次连接的损耗,以及对数据库连接数这个稀缺资源的有效分配。
作者: harry_li    时间: 2004-08-12 09:08
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
我想数据库查询操作的时候应该有好处的吧?
作者: windflowers1976    时间: 2004-08-12 11:23
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
查询的优化一是由调用者本身优化SQL语句,一是由数据库完成一些SQL的预先动作,大概也和数据库连接池没关系吧?数据库连接池是外部应用建立的。当然,可能我对数据库连接池理解比较浅薄,可能说的不对,大家探讨。
作者: FH    时间: 2004-08-12 11:42
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
连接池是互联网技术发展到一定阶段的产物,对应于线程级应用服务器。
数据库的连接对应的是系统的进程,而应用服务器面向的是相对简单的服务。
传统的应用服务器是进程级的,每次响应服务时都要打开、关闭数据库,造成资源的很大浪费。
现代的应用服务器是线程级的,因而可以预先建立一定数量的数据库连接,以大大提高服务的处理速度。这就是数据库连接池。

首先搞清楚连接池是什么,并不是所有的应用都需要连接池的,没必要动不动就玩点时髦的东西,要知道那些东西并不见得适用你的要求。
作者: mep    时间: 2004-08-12 22:45
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
有时连接池很必要,我记得商业数据库是按照能够支持的连接个数收钱的
数据库连接也非常耗时,耗资源.
作者: windflowers1976    时间: 2004-08-13 07:33
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
呵呵,根据我和某些数据库厂家中国技术支持曾经交互的结果,技术和市场策略还是没什么关系。完全可以买80用户,配200用户连接。关于数据库连接池,FH老兄已经说的很清楚了。
作者: fzgang    时间: 2004-08-13 12:32
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
postgresql支持这个插入方式的
strcpy(sql,"insert into test values(1);
insert into test values(1);
insert into test values(1);
insert into test values(1);
insert into test values(1);
insert into test values(1);
insert into test values(1);"
可以一次执行多条SQL语句的,碰上这种几千条的记录,在一个事务里面执行效率应该可以高很多的
作者: harry_li    时间: 2004-08-13 12:38
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
是的.我试过了.我用事务来写入2000多条纪录,比以前快多了.
作者: zhuningqw    时间: 2004-08-13 15:13
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
连接池和数据库操作的效率好像没什么关系(在单用户下)
用事务来做不一定会提高效率,事务只用来保证多步数据操作的完整性
并会在操作的同时写入日志文件,单步操作会使用隐藏事务
作者: harry_li    时间: 2004-08-13 17:24
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
用了fork()还是觉得没有并行插入数据库.看到的明明是子进程执行完再执行父进程的.今天有测试了以下程序,也是没有并行的执行:程序如下:
  pid=fork();
if (pid<0)
{
  printf("fork error\n";
  exit(1);
  }
  if (pid==0)
  {
   //parseDoc (conn,docname);
     int i;
     for(i=0;i<30;i++)
     { printf("%d\n",2*i+1);}

  }
else
  {
    // parseDoc(conn,docname1);
     int j;
    for(j=0;j<30;j++)
    {
       printf("%d\n",2*j);}
   }
  exit(0);
作者: aXe    时间: 2004-08-13 18:03
标题: 关于连接数据库,插入数据的问题,如何提高效率?请介绍一下经验
如果支持
insert into tbl (ID) values (1, 2, 3, 4, 5, 6......)
更快.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2