佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 854|回复: 14

请问关于overload shared hosting's cpu usage

[复制链接]
发表于 10-3-2007 12:41 AM | 显示全部楼层 |阅读模式
如果我有大约30K的records在mysql database, 用web application 执行以下的sql statement 会不会导致我所租用的shared hosting的CPU usage overload?

SELECT ap.code, ap.no, ap.belongto, ap.commission, ap.closing_date, ap.r_price, ap.square_fit, ap.race, ap.type, ap.tenure, ap.bedroom, ap.duration, ap.deposit, ap.address, ap.doorplate, ap.status
FROM auction_properties ap WHERE ap.type LIKE '%House%' AND closing_date > now() AND ap.insert_date =
( select max( i.insert_date) from auction_properties i where i.code = ap.code AND i.no = ap.no )
ORDER BY insert_date DESC LIMIT 0, 100"
回复

使用道具 举报


ADVERTISEMENT

发表于 10-3-2007 09:25 AM | 显示全部楼层
原帖由 一只优雅的猪 于 10-3-2007 12:41 AM 发表
如果我有大约30K的records在mysql database, 用web application 执行以下的sql statement 会不会导致我所租用的shared hosting的CPU usage overload?

SELECT ap.code, ap.no, ap.belongto, ap.commission,  ...



这样的statement不会的,加上你只有30K的record而已,如果这样会CPU USAGE OVERLOAD,那建议你换 WEB HOSTING 了^^

但如果你把这SQL 放到FOR LOOP里就可能会了^^
如果你用MYSQL的话,就把table type换成 innoDB rather than MYISAM,毕竟innoDB是ROW LOCKING而不是MYISAM的TABLE LOCKING
回复

使用道具 举报

 楼主| 发表于 10-3-2007 11:48 AM | 显示全部楼层
以下就大约是我的coding to display data, 大约要23秒才能显示网页,而如果直接在webhosting's phpmyadmin上执行sql query,大约需要12~4秒......

请问是不是我的coding导致他们的cpu usage overload.. 有什么办法解决吗?

<BODY>
<%
    Str = "SELECT ap.code, ap.no, ap.belongto, ap.commission, ap.closing_date, ap.r_price, ap.square_fit, ap.race, ap.type, ap.tenure, ap.bedroom, ap.duration, ap.deposit, ap.address, ap.doorplate, ap.status
FROM auction_properties ap WHERE ap.type LIKE '%House%' AND closing_date > now() AND ap.insert_date =
( select max( i.insert_date) from auction_properties i where i.code = ap.code AND i.no = ap.no )
ORDER BY insert_date DESC LIMIT 0, 100"

    cmd.CommandText = Str

    Try
            MyConn.Open()
            cmdreader = cmd.ExecuteReader()

    While cmdreader.Read   
%>
<tr><td><%= cmdreader("username" %><%= cmdreader("address") %>
<%               
    End While
%>
<body>

[ 本帖最后由 一只优雅的猪 于 13-3-2007 09:26 AM 编辑 ]
回复

使用道具 举报

发表于 10-3-2007 12:37 PM | 显示全部楼层
应该不会,但我在你的SQL STATEMENT里看不到这FIELD ?
username
回复

使用道具 举报

 楼主| 发表于 10-3-2007 03:24 PM | 显示全部楼层
oh.. 没有username因为那是我轻轻带过。。正确地是有将所有select的fields display出来。。如:

ap.code, ap.no, ap.belongto, ap.commission, ap.closing_date, ap.r_price, ap.square_fit, ap.race, ap.type, ap.tenure, ap.bedroom, ap.duration, ap.deposit, ap.address, ap.doorplate, ap.status

如果不是因为我的looping 和 30k的records导致他们的cpu usage overload?

那间公司是exabyte...
回复

使用道具 举报

发表于 10-3-2007 09:38 PM | 显示全部楼层
我之前已是遇到一些问题deal with 这间公司。建议如果确定自己的code没错,就尽可能push到他们解决。我的也是一样,最终查出错误是server设定.....zzz.....害我不浅就因这问题....

也建议你,如果可以,放在其它公司test看结果,如果真的没事就。。。
回复

使用道具 举报

Follow Us
发表于 12-3-2007 01:59 AM | 显示全部楼层
如果 hosting 公司指责你 overload, 你可以要求他们提供详细的报告. 要是拿不出报告... 那就换公司吧...
回复

使用道具 举报

 楼主| 发表于 12-3-2007 03:54 PM | 显示全部楼层
他们就show几个screen shot 说每当他们execute我的search engine时,他们server's cpu usage就会overload,这算不算报告呢?

并说这个情况已经影响到user..因为我是租shared hosting的

其实我的coding会不会导致这样的事发生呢? 我总共有大约30k的资料。。
我的写法应该有点落伍了吧。。 但ajax又还没时间学。。

<BODY>
<%
    Str = "SELECT ap.code, ap.no, ap.belongto, ap.commission, ap.closing_date, ap.r_price, ap.square_fit, ap.race, ap.type, ap.tenure, ap.bedroom, ap.duration, ap.deposit, ap.address, ap.doorplate, ap.status
FROM auction_properties ap WHERE ap.type LIKE '%House%' AND closing_date > now() AND ap.insert_date =
( select max( i.insert_date) from auction_properties i where i.code = ap.code AND i.no = ap.no )
ORDER BY insert_date DESC LIMIT 0, 100"

    cmd.CommandText = Str

    Try
            MyConn.Open()
            cmdreader = cmd.ExecuteReader()

    While cmdreader.Read
%>
<tr><td><%= cmdreader("code" %><%= cmdreader("no" %>

........(全部的select...).....

<%               
   End While
%>
<body>

[ 本帖最后由 一只优雅的猪 于 13-3-2007 09:29 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 13-3-2007 09:24 AM | 显示全部楼层
通常如果我们的query result很多 , 我们会分页来显示....

请问如果将所有的query result display在同一个page, 会不会是导致overload的主因呢?

但即使我limit了只显示100个records..还是会导致overload....
回复

使用道具 举报

发表于 13-3-2007 09:47 AM | 显示全部楼层
原帖由 一只优雅的猪 于 12-3-2007 03:54 PM 发表
他们就show几个screen shot 说每当他们execute我的search engine时,他们server's cpu usage就会overload,这算不算报告呢?

并说这个情况已经影响到user..因为我是租shared hosting的

其实我的coding会不 ...


你的这 coding 会 generate 多少个 row? 你是否一次 pump 进 datagrid 然后分页?
回复

使用道具 举报

 楼主| 发表于 13-3-2007 11:25 AM | 显示全部楼层

回复 #10 goatstudio 的帖子

我已经限制了只显示100个rows..

同时我不是pump进datagrid分页,而是用以下的方法

<table>
<%
    While cmdreader.Read
%>
<tr><td><%= cmdreader("code" %><%= cmdreader("no" %>
<tr><td>(大约还有10个cmdreader)</td></tr>
<%               
   End While
%>
<table>
回复

使用道具 举报

发表于 13-3-2007 12:02 PM | 显示全部楼层
原帖由 一只优雅的猪 于 13-3-2007 11:25 AM 发表
我已经限制了只显示100个rows..

同时我不是pump进datagrid分页,而是用以下的方法

<table>
<%
    While cmdreader.Read
%>
<tr><td><%= cmdreader("code" %&g ...


1. 你说限制了 100 个 row? 是一个 page 100 个 row? 还是整个 result 是 100 个 row?
2. 在你被投诉前, 你整个 result 是几个 row?
3. 你用的资料库是 MSSQL 2000 还是 MSSQL 2005?
回复

使用道具 举报

 楼主| 发表于 13-3-2007 12:33 PM | 显示全部楼层
1) 是一个page 一百个rows
2) 几百到一千不等
3. 我是用mysql 5.0

total records in mysql database is about 30,000

[ 本帖最后由 一只优雅的猪 于 13-3-2007 12:49 PM 编辑 ]
回复

使用道具 举报

发表于 13-3-2007 02:17 PM | 显示全部楼层
原帖由 一只优雅的猪 于 13-3-2007 12:33 PM 发表
1) 是一个page 一百个rows
2) 几百到一千不等
3. 我是用mysql 5.0

total records in mysql database is about 30,000



到达千多的话, 你会有麻烦. 因为 ASP.Net 的 Data Adapter 设计的问题.
和 PHP 不同, 到达千多个 record, 可以直接引用 MySQL 里的 paging.

我建议你:

1. Optimize 你的 sql, MySQL 5.0 已经支持 View, 用 View 把复杂的 sql 来简化.
2. 不要用 ASP.Net 来写 paging, 用 sql statement 来控制 MySQL 的 paging, 你可以查看 LIMIT 的用法. 这样一来, 你的 result 本来有 2000 个, 但是 MySQL 只传回 10 个, 如果你想在一页显示 10 个 result.
回复

使用道具 举报

发表于 13-3-2007 11:15 PM | 显示全部楼层
肯定会慢。

1) LIKE '%House%'
- 无法利用 Index
2) ap.insert_date =
( select max( i.insert_date) from auction_properties i where i.code = ap.code AND i.no = ap.no )
- 每一个Record(30000 不是 100), 它需要使用 sub query 取得结果
3) max( i.insert_date) 也会慢,
- insert_date 有 Descending Index 吗?
4) ORDER BY insert_date DESC
- 有 Descending Index for insert_date 吗?
5) 其他 Index 正确吗?

我推荐不使要用
ap.insert_date =
( select max( i.insert_date) from auction_properties i where i.code = ap.code AND i.no = ap.no )



inner join new_auction_properties_with_max_insert_date_only i
where i.code = ap.code AND i.no = ap.no
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-8-2025 05:37 AM , Processed in 0.148719 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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