我们已经在注册表格上设计了一个国家,州,城市下拉菜单功能,但是由于进程中明显的SQL重载,我们的主机(主机Gator)在数据库上放置了一个块。下来,我所做的只是咖啡馆,以确保状态相应地更改,并且与城市相同。
我们有一个共享的托管帐户,并允许使用多达25%的CPU和RAM,就像32核AMD和64GB Ram服务器一样。我真的看不到三层下降会如何导致这样的问题。
这是他们发送给我们的电子邮件:
你好,
该消息是为了建议您在数据库上放置一个临时块。发现该数据库消耗了过多的处理器时间,从而降低了整体系统性能。尽管我们确实将每个帐户的服务范围限制为不超过系统CPU的25%,但我们不会主动禁用帐户,直到它们大大超过该数目(在这种情况下就是这种情况)。通过在有限的时间内限制查询或连接的最大数量,可能会降低对该数据库的请求,或者如果存在持续的问题,最终我们可能被迫阻止对该数据库的访问,直到问题解决为止。
解决这种情况可能很简单,例如向数据库中添加其他索引,优化使用的查询或同样容易的事情。如果没有,则可能只是将数据库移至专用服务,因为它可能已经超出了共享环境。
如果您认为可以解决这种过度使用问题,我们很乐意与您讨论这种情况,并可能在服务器上恢复数据库。否则,如果专用服务器是最合适的解决方案,我们将很乐意协助您进行升级。谢谢,我们期待着您的回音。
~~~
MySQL过多活动是由(a)长时间运行的进程锁定表,导致备份其他查询,(b)未优化的查询引起的。 [复杂查询],(c)高峰时段的大量表副本/维护。
注意:以下只是可能的修复或建议,而不受HostGator认可或支持。包含它们是希望它们可以应用于您的情况,和/或帮助您减少SQL查询消耗的资源量。与往常一样,最好在进行任何更改或调整之前备份所有数据。
首先,您可能需要优化表。频率取决于数据库的大小和使用情况,但是大多数数据库每年都可以通过执行以下操作而受益:a)输入您的phpMyAdmin / MySQL控制面板。单击数据库(而不是表,数据库名称),然后在右列上列出您的表。向下滚动,直到看到.Check all。链接。单击该链接,确保选中所有数据库表,然后从其旁边的下拉列表中仔细选择.Optimize table。
此外,向表中添加索引可以提高性能。如果不确定自己在做什么,最好不要修改任何表。建议谨慎使用。有各种各样的文章
如果您使用IP地址(http://www.hostgator.com/ip.shtml)对此进行回复,我们将非常乐意为您启用HTTP访问,以便您可以安全地处理脚本而不会引起进一步的问题。请让我们知道您要如何进行。
CPU_TIME:138 table_rows_read:402659370 SELECTS:134266 ROWS_UPDATED:66854 ROWS_FETCHED:200708 BUSY_TIME:141 ONNECTED_TIME:159 BYTES_SENT:0 BYTES_RECEIVED:16653735 WAIT_TIME:3
顶部表格行显示:
DB_USER:创新-TOTAL_CONNECTIONS:279-CONNECTED_TIME:159-CPU_TIME:138-TABLE_ROW_READS:402664343-SELECT_COMMANDS:134301-UPDATE_COMMANDS:-BUSY_TIME:141-BYTES_SENT:0-BYTES_RECEIVED:16658133-等待(IO):3
等待时间(IO):
DB_USER:创新-TOTAL_CONNECTIONS:279-CONNECTED_TIME:159-CPU_TIME:138-TABLE_ROW_READS:402664343-SELECT_COMMANDS:134301-UPDATE_COMMANDS:-BUSY_TIME:141-BYTES_SENT:0-BYTES_RECEIVED:16658133-等待(IO):3
创新10050 0.0 0.0 0.0 19964 1340 SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新10200 0.0 0.0 0.0 17768 1084 SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新10381 0.0 0.0 0.018040 1604 SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新10539 0.0 0.0 18036 1584? SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新21266 15.0 0.0 295808 15884? RN 02:31 0:00 / usr / bin / php /home3/innovate/public_html/developer/innovativeresearch/admin/addtotable.php
2013年11月14日星期四02:31:25
运行过程:
创新10050 0.0 0.0 0.0 19964 1340 SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新10200 0.0 0.0 0.0 17768 1084 SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新10381 0.0 0.0 0.018040 1604 SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新10539 0.0 0.0 18036 1584? SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新21266 15.0 0.0 295808 15884? RN 02:31 0:00 / usr / bin / php /home3/innovate/public_html/developer/innovativeresearch/admin/addtotable.php
运行查询:
************* 1.行*************
用户:创新
DB:innovate_research
州:
时间:0
命令:睡眠
INFO:空
打开连接
当前的站点请求:
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
99.231.106.237 creavation.com /developer/innovativeresearch/admin/addtotable.php?addprod=
这是我们从以下位置购买国家,州,城市数据库的地方:
http://www.worldcitiesdatabase.com/world-cities.aspx
在这方面的任何帮助将不胜感激:(
<?php //require_once('inc/config.php');?>
<?php
//check(); //check admin login
$link = mysql_connect('localhost', 'innovate', '4HIDDENW8n');
$db_selected = mysql_select_db('innovate_research', $link);
/*$sql = "select * from country";
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
$sql=mysql_query("INSERT INTO `innovere_country` (`country_name` ,`country_code`) VALUES ('".$row['country_name']."', '".$row['country_code']."');");
}*/
/*$sql = "select * from states";
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
$sql_country = mysql_fetch_array(mysql_query("select * from innovere_country where `country_code`='".$row['country_code']."'"));
$sql=mysql_query("INSERT INTO `innovere_state` (`country_id` ,`state_name` ,`state_code`) VALUES ('".$sql_country['country_id']."', '".addslashes($row['state_name'])."', '".$row['state_code']."');");
}*/
ini_set('max_execution_time', 0);
$sql_count = mysql_fetch_array(mysql_query("select count(*) as num_c from weblocations"));
if(empty($_REQUEST['startpaging']))
{
$_REQUEST['startpaging']=0;
}
$startpaging = $_REQUEST['startpaging']+240;
echo "<br>add : ".$addprod=$_REQUEST['addprod'];
echo $sql = "select * from weblocations limit $startpaging,240";
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
$addprod++;
if(!empty($row['country_code']))
{
$sql_country = mysql_fetch_array(mysql_query("select * from innovere_country where `country_code`='".$row['country_code']."'"));
}
if(!empty($row['state_code']))
{
$sql_state = mysql_fetch_array(mysql_query("select * from innovere_state where `state_code`='".$row['state_code']."' and `country_id`='".$sql_country['country_id']."'"));
}
$sql=mysql_query("INSERT INTO `innovere_city` (`state_id` ,`country_id` ,`city_name`) VALUES ('".$sql_state['state_id']."', '".$sql_country['country_id']."', '".addslashes($row['city_name'])."');");
echo "<br>"."INSERT INTO `innovere_city` (`state_id` ,`country_id` ,`city_name`) VALUES ('".$sql_state['state_id']."', '".$sql_country['country_id']."', '".$row['city_name']."');";
}
echo "<br>total : ".$sql_count['num_c'];
echo "<br>add : ".$addprod;
if($sql_count['num_c']>$addprod)
{
echo "<script>document.location.href='addtotable.php?addprod=".$addprod."&startpaging=".$startpaging."'</script>";
}
/*ini_set('max_execution_time', 0);
$country_code = "AF";
$sql_count = mysql_fetch_array(mysql_query("select count(*) as count_num from weblocations where ` country_code`='".$country_code."'"));
echo "<br>Count: ".$sql_count['count_num'];
echo $sql = "select * from weblocations where `country_code`='".$country_code."'";
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
if(!empty($row['country_code']))
{
$sql_country = mysql_fetch_array(mysql_query("select * from innovere_country where ` country_code`='".$row['country_code']."'"));
}
if(!empty($row['state_code']))
{
$sql_state = mysql_fetch_array(mysql_query("select * from innovere_state where ` state_code`='".$row['state_code']."' and `country_id`='".$sql_country['country_id']."'"));
}
$sql=mysql_query("INSERT INTO `innovere_city` (`state_id` ,`country_id` ,`city_name`) VALUES ('".$sql_state['state_id']."', '".$sql_country['country_id']."', '".addslashes($row['city_name'])."');");
echo "<br>"."INSERT INTO `innovere_city` (`state_id` ,`country_id` ,`city_name`) VALUES ('".$sql_state['state_id']."', '".$sql_country['country_id']."', '".$row['city_name']."');";
}*/
?>
这是我们拥有的表的列表:
表1:innovere_city行= 1,604,640 MyISAM utf8_general_ci 73.8 MiB,
表2:innovere_country行数= 247 MyISAM utf8_general_ci 10.7 KiB
表3:网站行数= 2,449,838 MyISAM utf8_persian_ci 127.1 MiB
表4:innovere_state行:3,874 MyISAM utf8_general_ci 185.1 KiB
表5:国家行数= 247 MyISAM utf8_persian_ci 6.3 KiB
我刚刚意识到我们有两个国家/地区表?
最佳答案
如果我打赌,我怀疑问题是您返回的行太多了,而您需要使用的是一个层叠的下拉列表。搜索“ javascript Cascadeing dropdrown”将显示许多示例,包括jquery和其他填充脚本库。
添加
如果您了解“级联下拉菜单”,您将知道需要更改的内容-为了简单起见,我将假设使用jquery。其想法是仅在最初仅填充顶级(国家/地区)SELECT的情况下为网页提供服务。通过对国家SELECT进行更改的jquery事件处理,您可以对服务器进行AJAX调用,以在他们选择美国或省时选择“州”,然后再选择加拿大,等等。然后,从中填充“州/地区” SELECT对于级联下拉菜单的每个级别也是如此。
JQuery(和其他脚本库)具有使您变得简单的所有功能-如果您不使用脚本库-请花点时间立即学习JQuery-这将是您有史以来学习的最佳时间网站开发。 JQuery被广泛使用是有充分理由的。
关于php - 我们已经在注册表格上设计了国家,州,城市下拉菜单功能,但是我们的房东在我们的数据库上放置了一个阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19986010/