MYSQL连接大字符串

时间:2012-07-18 00:23:15

标签: mysql database

我有一个网络抓取工具,可以在抓取网页时将信息保存到数据库中。虽然它这样做,它还保存了其操作的日志文件,以及它遇到的任何错误到mysql数据库中的日志字段(字段变为64kb到100kb之间。它通过连接(使用mysql CONCAT函数)来实现。

这似乎工作正常,但我担心它对mysql数据库的cpu使用/影响。我注意到,网络爬行的执行速度比实施将日志保存到数据库之前要慢。

我从管理网页查看此日志文件,除了缓慢加载外,当前的实现似乎工作正常。有关加快这项工作或实施建议的任何建议吗?

1 个答案:

答案 0 :(得分:1)

多次将100kb字符串读入内存,然后通过db将它们写入磁盘。当然你会经历减速!您正在做的每一部分都是执行内存,磁盘和CPU(特别是如果内存使用量达到系统最大值并且您开始交换到磁盘)。让我算一下你可能会降低整体网站性能的一些方法:

  1. Sql连接最大化和备份,因为存储100kb记录的时间增加了单个进程保持连接的时间
  2. Web服务器进程耗尽了免费进程池并最大化并需要更长时间才能释放,因为他们必须等待数据库连接释放。
  3. Web服务器进程开始膨胀并且每个进程占用更多内存,可能超过系统无需交换即可处理的内存。这使用最大值复杂化。由#2
  4. 引起的流程
  5. ......可以写一本关于你情况的书。