1、不是,当程序结束后连接就中断了
2、同时访问数由web服务器(apache、iis)限制
3、影响不大

解决方案 »

  1.   

    1.不是,但按情况而定,如果楼主在PHP里面用的是mysql_pconnect,那么,临时表不会随着程序结束而自动删除,如果用的是mysql_connect,那么当mysql_close过后临时表会删除2.我觉得这应该不会有很大问题,实际上mysql性能很好的,不过我觉得还是尽量避免使用很多临时表3.影响不大,实际上现在数据库的I/O性能已经非常好了,只要没有复杂的查询,读写文件的速度也不会比读写DB的速度快多少,如果是一些商用数据库,往往数据库的纯I/O性能要比文件系统的I/O性能好很多.
      

  2.   

    screend(流浪小子),xuzuning(唠叨) 
    流浪小子,唠叨两位老大,得到两们上面的解说我的问题已经解决了一半再请教一下。如果我使用mysql_pconnect链接数据库,那么每个浏览器也用同一个数据链接吗?如果是这样的话,mysql有必要限制链接数吗?虽然说用PHP已经很久了,但很多基本的东西还没搞得懂,请大家指教
      

  3.   

    不是,当使用长连接时,同样是在php程序结束时切断连接。只是并未切断php到mysql的tcp/ip连接,这样在再次mysql_connect时php首先检查是否有空闲的连接,若有则起用该连接。这样可以减少创建连接的时间。
    不过,你要使用临时表的话,你能确认上次连接中的临时表就是你需要的吗?
      

  4.   

    回唠叨老大的话,我总算明白了mysql_pcconnect了。
    是的,我能够确定临时表就是我所需要的。因为我的想法是这样
    现时有一个表用于存放产品信息,数据量可能达30W以上;于是乎我就想创建一个临时表用于存放200条数据,这个临时表每隔一段时间就更新一次,通过这样的手段来高速度。不知老大觉得是否可行?
      

  5.   

    是的,我能够确定临时表就是我所需要的。因为我的想法是这样
    现时有一个表用于存放产品信息,数据量可能达30W以上;于是乎我就想创建一个临时表用于存放200条数据,这个临时表每隔一段时间就更新一次,通过这样的手段来高速度。你并未真正理解mysql的临时表
    1、假定你有100个长连接,那么就有100个临时表。因为临时表只对当前了连接有效
    2、mysql保证了临时表不会重名,所以你可以用同样的名字去访问。
    3、你无法在不同的进程中来保证临时表的有效性所以,你的设想的实现应该是物理表而非临时表
      

  6.   

    回 zairwolfi(君子兰)的话:
    我这次做的不是论坛,不过我倒觉得也可以。在论坛里一般人看的也只是开头几页,旧的贴子相关的心不多(技术论坛例外)。把新的贴子写到一个“临时表”里,这样可能会牺牲发贴时的一部份速度,但应该能够提供页面的访问速度。不知阁下觉得是否可行?
      

  7.   

    感谢xuzuning(唠叨)老大,我总算又搞懂了临时表的真正意义。怪不得他们都说用临时表来做分页了。
    还有的就剩下页面计算器的问题了,每次访问页面也修改数据表吗?这样频繁的交互会否影响服务的速度。如果用PHP的$GLOBALS来存放,隔一段时间再写到数据库这样就可以避免了这种现角。但可行吗?请指教
      

  8.   

    我生知道ASP里有连接池的概念,用户是一个动态的概念,它总会使创建的链接和用户在线数达到一个动态的平衡,也就是说不会在一个很长的期间内出现空闲的链接,从而发挥服务器的最大性能.
    我不知道这个在PHP里是怎么表达的!!
      

  9.   

    回复人: caaclxf(有人说我的名字很长) ( ) 信誉:100  2004-09-21 17:55:00  得分: 0  
     
     
       回 zairwolfi(君子兰)的话:
    我这次做的不是论坛,不过我倒觉得也可以。在论坛里一般人看的也只是开头几页,旧的贴子相关的心不多(技术论坛例外)。把新的贴子写到一个“临时表”里,这样可能会牺牲发贴时的一部份速度,但应该能够提供页面的访问速度。不知阁下觉得是否可行?
      
     
    正是。不过那应该不叫临时表了吧。是一个专门的表。我不知道你们所说的临时表是什么,也许还有一个mysql的特殊功能可以做这个吧。
    的确可行。但是如果浏览者翻看旧贴的话,怎么办?
    另外,不是把新帖子放到临时表,而只是把它对应的地址放到临时表中吧?读取的时候再进入庞大的帖子库,对所需要的帖子指定读取,不知道是不是这样的?
      

  10.   

    回zairwolfi(君子兰) 
    我们说的的确是一个专门的表,只不过MYSQL里有一种Heap的表格式那时我并没有了解这种表临时真正的意义所以才把名字搞错了。
     xuzuning(唠叨)老大,正如 awwpdcwx() 所说的,ASP跟数据连接有连接池,但PHP与数据库是怎样交互的,这个你有概念吗?不知能否告知我们!
      

  11.   

    不过那应该不叫临时表了吧。是一个专门的表。我不知道你们所说的临时表是什么,也许还有一个mysql的特殊功能可以做这个吧。不是叫临时表,你那个是物理表,用于存放临时的分页数据.
    页MYSQL的临时表,则与windows的temp相类似.MYSQL会自动清理临时表.链接被断开,所建立的临时表也就被删除.
      

  12.   

    ASP、JSP跟数据连接都可以使用连接池,但连接池并不是他们提供的。而是由通用数据接口ODBC、JDBC提供的。也就是
    ASP <——> ODBC <——> DATABASE
    JSP <——> JDBC <——> DATABASE
    php要底层一些,他是直接与数据库交互的
    PHP <——> DATABASEmysql的Heap类型的表是创建于内存中的,运行起来当然要快很多。你确实可以考虑使用这样的表缓存一些信息
      

  13.   

    我曾经以为一些计算放在php里面执行会相对高些,只用mysql进行相关的简单查询,可是前一段时间在家没事,做了一个测试,把计算放到mysql查询的时候要比在php里面计算速度高很多。首先说明当时查询的东西很多,快十万条了所以说,mysql数据库很厉害的。相信它:)