Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于mysql 4.0数据库容易损坏的问题

[复制链接]
gzaboy 发表于 2003-7-22 19:23:11 | 显示全部楼层 |阅读模式
不明白为什么编译了mysql4.0.13来用discuz,隔几天就出现数据表损坏,都要采用数据表修复才正常.但在用mysql3.23.57的时候,用样用discuz却不会出现错误,真怪!

注:我看到这个论坛里面经常会有人提出一样的为什么数据表损坏的问题,我想这是普遍存在的问题吧.
Crossday 发表于 2003-7-23 00:47:47 | 显示全部楼层
什么版本的Discuz!?

因mysql本身版本之间相对不很稳定 不同版本的性能可能有差别
我们测试和实际使用中 一般如果myi文件出错 可修改my.cnf中的key_buffer大一些即可避免 另外不同版本的Discuz!中一些关键数据的读取方式和数据结构也不同

我们开发阶段做了大量的测试 结果如下:
1.0版本session表易坏 应属设计问题 读写过于频繁
2.0版本在freebsd下编译的4.0版本可能有点问题 可能和mysql在freebsd下的进程控制或延迟更新有关(表现在100万贴以上论坛threads表的索引损坏,或50万贴以下论坛数据库有发呆的现象)
2.0版本在linux下,或使用mysql 3.23都比较快和平稳
3.0版本在freebsd下比2.0快一倍以上 在linux+mysql 4.0的环境下也比2.0快1.5倍以上.但在3.23版本下个别大论坛会不如预期的快(证实是3.23.55以前版本存在索引读取的BUG造成)
linux下mysql自己编译和使用rpm装运行Discuz!的效果相同
linux下2.0大概在数据库超过600M时会变得脆弱,容易进程拥堵.3.0我们做了2G数据库的实际运行至今,无数据表损坏现象,基本无进程拥堵现象

相对严重的就是1.0的session损坏和2.0用在freebsd 4.x+mysql 4.0上的问题 如果流量非常大 需要修改系统设置 不过索性基本所有的数据表周期损坏都可通过调整my.cnf来避免
回复

使用道具 举报

 楼主| gzaboy 发表于 2003-7-23 17:19:38 | 显示全部楼层
多谢大C的解答,我多数和用2.0版本,也有1.03版本的,会出现同样的出错情况,基本上是两天左右一次,我现在天天晚上都要用phpmyadmin的repair修复功能修复并且优化一次所有数据表,这样就不会出现问题了,但是如果两天没有主动修复或者优化,都会出现问题,所以觉得很是奇怪,以下是本人编译mysql4.0.13的configure:

CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared -with-extra-charsets=none


本人为linux slackware9(2.4.21内核)系统。

[[i] Last edited by gzaboy on 2003-7-23 at 05:21 PM [/i]]
回复

使用道具 举报

 楼主| gzaboy 发表于 2003-7-23 17:24:33 | 显示全部楼层
补充一下,在用mysql4.0.13之前是用mysql3.23.57的,从来没有出现过问题。只是用了mysql4.0.13之后才这样的。

但是其他php程序却不会这样使mysql出错。只有discuz论坛才会,不知是何解,祝大C早日解决此问题,呵呵,以造福我们大家,感谢!
回复

使用道具 举报

Crossday 发表于 2003-7-24 09:04:34 | 显示全部楼层
其实这个之前解决过 不过考虑只在个别系统上有问题,所以2.0没有做更新.

可以使用my.cnf set-variable=max_key_buffer=256M (如果你有1G内存的话)
或者修改forumdisplay.php 将topped='3' OR 字样的两处东西去掉,并修改数据库中的索引: ALTER TABLE `cdb_threads` DROP INDEX `lastpost` ,
ADD INDEX `lastpost` ( `fid` , `topped` , `lastpost` )
即可 这样损失置顶III功能 但在mysql 4上跑的非常快和稳定 因为全局置顶和分论坛排序在索引设置上是矛盾的 所以Discuz! 3.0也没有全局置顶(III)功能 2.0的索引照顾了置顶III,3.0是照顾分论坛的 我们测试了这样的方式效果更好 :)
回复

使用道具 举报

cqfanli 发表于 2003-7-24 11:09:42 | 显示全部楼层
昏死,嚴重打擊我使用freebsd的信心。我本來以為discuz2跑在freebsd上面更穩定和快速的,想不到居然比不上linux?
聽大C說這是freebsd自身延遲的問題,我想能不能通過sysctl來改變內核設置,讓其更加優秀呢?我喜歡freebsd多過喜歡linux~
mysql4.1 可能不太穩定吧,好象大家都沒有用它。
回复

使用道具 举报

 楼主| gzaboy 发表于 2003-7-24 13:30:11 | 显示全部楼层
Originally posted by Crossday at 2003-7-24 09:04 AM:
其实这个之前解决过 不过考虑只在个别系统上有问题,所以2.0没有做更新.

可以使用my.cnf set-variable=max_key_buffer=256M (如果你有1G内存的话)
或者修改forumdisplay.php 将topped='3' OR 字样的两处东西去 ...

哈哈,非常感谢大C的回复,这样终于明白为什么总是损坏的原因啦,祝原discuz更加茁壮成长。
另外加点建议,可以在现在3,0的基础出再加强些功能,然后这个版本的价格比普通的3.0价格要高些。
并且最好是有功能二次开发,这样需要购买的人就更多了,哈哈。
回复

使用道具 举报

tonyvicky 发表于 2003-7-24 13:48:59 | 显示全部楼层
;)
还是老大厉害呀.
回复

使用道具 举报

Crossday 发表于 2003-7-26 11:31:09 | 显示全部楼层
Originally posted by cqfanli at 2003-7-24 11:09 AM:
昏死,嚴重打擊我使用freebsd的信心。我本來以為discuz2跑在freebsd上面更穩定和快速的,想不到居然比不上linux?
聽大C說這是freebsd自身延遲的問題,我想能不能通過sysctl來改變內核設置,讓其更加優秀呢?我喜 ...

哦 不是哪个系统更优秀的问题..
但Discuz!2确实更适合linux而3都适合,bsd下比linux下还稍好一点
回复

使用道具 举报

cdb 发表于 2003-7-28 14:20:46 | 显示全部楼层
是mysql的问题,我试过在linux freebsd winnt mysql4都会出错,害的我损失15天的数据,mysql3.23.57就没问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 10:34 , Processed in 0.021911 second(s), 2 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表