有没有可能做一个数据库集群系统,提高mysql的执行效率?
ioiioi
有没有可能做一个数据库集群系统,提高mysql的执行效率?
我在一部dell的台式机上面运行一条select语句,CPU占用高达100%,而且的时候花费很长时间,等不下去了,索性关掉了进程。
目前还有两台闲置的相同配置的台式机,有没有可能将这几台机器做一个集群系统?提高mysql的执行效率?
yueliangdao0608
[quote]原帖由 [i]ioiioi[/i] 于 2008-3-20 13:25 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8104611&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
我在一部dell的台式机上面运行一条select语句,CPU占用高达100%,而且的时候花费很长时间,等不下去了,索性关掉了进程。
目前还有两台闲置的相同配置的台式机,有没有可能将这几台机器做一个集群系统?提高my ... [/quote]
可以的。不过你最好再准备一台机器。
不过你的SELECT语句得优化一下先
ioiioi
回复 #2 yueliangdao0608 的帖子
具体该怎么做?
有没有例子?我的select语句是:
[code]
select * from a
where mobile not in (
select mobile from b
)
[/code]
这两个表具有相同的字段,并且数量为60万笔记录。
vpnstudy
[quote]原帖由 [i]ioiioi[/i] 于 2008-3-20 14:36 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8105022&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
具体该怎么做?
有没有例子?我的select语句是:
select * from a
where mobile not in (
select mobile from b
)
这两个表具有相同的字段,并且数量为60万笔记录。 [/quote]
先在两个表的mobile上建 索引。
然后改成这样行不行:
select a.* from a ,b where a.mobile!=b.mobile
不知道这样的语句有没有错。
yueliangdao0608
[quote]原帖由 [i]vpnstudy[/i] 于 2008-3-20 15:11 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8105506&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
先在两个表的mobile上建 索引。
然后改成这样行不行:
select a.* from a ,b where a.mobile!=b.mobile
不知道这样的语句有没有错。 [/quote]
这样是不能用到索引的!
chinalujw
[quote]原帖由 [i]yueliangdao0608[/i] 于 2008-3-20 16:58 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8106489&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
这样是不能用到索引的! [/quote]
请解释一下为什么索引没作用?
yueliangdao0608
[quote]原帖由 [i]chinalujw[/i] 于 2008-3-20 17:08 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8106535&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
请解释一下为什么索引没作用? [/quote]
!=
<===>
where id > num or id < num;
ioiioi
我已经建了索引了,但是还是很慢。
慢到我通过任务管理器杀掉mysql-nt.exe这个进程。
我对多台机集群比较感兴趣,有没有这方面的文档?
ioiioi
回复 #8 yueliangdao0608 的帖子
那我应该如何修改这条select 语句?
justinyun
做集群其实蛮简单的,找一篇文章照做就好了,一般不会有多大问题。关键是数据库的引擎要变了。
关键还在于你对SQL执行时原理的了解!
yueliangdao0608
[quote]原帖由 [i]ioiioi[/i] 于 2008-3-21 09:06 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8108238&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
那我应该如何修改这条select 语句? [/quote]
见SUNNYFUN兄弟上次给一个帖子的回复。
select a.* from a where not exists (select * from b where a.mobile=b.mobile);
yueliangdao0608
回复 #10 ioiioi 的帖子
把你的表结构贴出来。
ct_17880859
如果不是所有栏位都要的话,最好不要用*,因为开销很大
voxxu
not in 的效率很低的,改成left join会好很多
select * from a left join b on (a.mobile=b.mobile) where b.mobile is null
hzcgz
[quote]原帖由 [i]ioiioi[/i] 于 2008-3-21 15:03 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8111330&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
还是不行,照样进程照样挂掉。 [/quote]
我上百万的记录都没挂掉,LZ 机器很差? :em14:
那就把另外两台也加加进来一起帮忙会快一些!
[[i] 本帖最后由 hzcgz 于 2008-5-23 15:35 编辑 [/i]]
yueliangdao0608
Did you solve your problem?
fffqqqyyy
集群对这种问题有用吗?我觉得集群应该是对待并发查询会比较好吧?
lgmyxbjfu
[quote]原帖由 [i]ioiioi[/i] 于 2008-3-20 13:25 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8104611&ptid=1068121][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
我在一部dell的台式机上面运行一条select语句,CPU占用高达100%,而且的时候花费很长时间,等不下去了,索性关掉了进程。
目前还有两台闲置的相同配置的台式机,有没有可能将这几台机器做一个集群系统?提高my ... [/quote]
如果一个select就搞到cpu到了100%,要么是sql语句有问题,需要优化,要么是索引什么的没建好