php - 更新11M行数据库和my.cnf优化

标签 php mysql configuration sql-update easyphp

我必须在 PHP 脚本中更新数据库中的 1100 万行。

一段时间后,脚本卡住或崩溃。我必须重新启动 EasyPHP 12,然后重新加载它。

我的配置:

  • Windows 7 专业版 64 位
  • 英特尔酷睿 i7 860 2.8Ghz
  • 8G内存

我的 my.cnf 文件:

port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
log-bin=mysql-bin
server-id = 1

[mysqldump]
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

这是崩溃的伪代码。

`For i to 100000 { do magic (check content on the web);    UPDATE table;    }`

最佳答案

你必须查看 php.ini,而不是 my.cnf。

我想您正在对单个记录执行一些逻辑并更新该记录,然后更新下一个记录。在这种情况下,单个记录(或记录子集)的更新不应花费那么那么长的时间。

卡住或崩溃是因为您的脚本达到了内存限制或其执行时间限制。

关于php - 更新11M行数据库和my.cnf优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13412754/

相关文章:

PHP:检查发布的变量是否存在或分配空值

PHP preg_match() 匹配字符串末尾的字符

php - 删除用户在演示站点中添加的数据的最佳做法?

MySQL连接查询年龄范围

mysql - 如何在 MySQL 中使用 "WITH"子句?

php fpm请求排队

php - 将连接 MYSQL 的动态 PHP 站点转换为 CMS 的简便方法?

Objective-C – 拥有一个包含 TestFlight SDK 的 TestFlight 配置

linux - 在 Linux 上重新映射 Win、Ctrl 和 Alt 键

configuration - 外部化 Grails 数据源配置