我们在注册表单上设计了一个国家、州、城市的下拉功能,但是由于进程中明显的 SQL 过载,我们的主机(Host Gator)在我们的数据库上设置了一个块。我认为这与测试 drop 有关下来,我所做的只是激怒国家,以确保国家相应地改变了几次,并且与城市相同。
我们有一个共享主机帐户,最多可以使用 25% 的 CPU 和 RAM,这就像 32 核 AMD 和 64GB Ram 服务器。我真的看不出三层下拉怎么可能导致这样的问题。
这是他们发给我们的电子邮件:
你好,
此消息是为了通知您在您的数据库中放置了一个临时块。发现该数据库消耗了过多的处理器时间,以至于降低了整体系统性能。虽然我们在服务条款中确实将每个帐户限制为不超过系统 CPU 的 25%,但我们不会主动禁用帐户,直到它们大大超过该数字,这就是在这种情况下发生的情况。通过在有限的时间内限制查询或连接的最大数量,对该数据库的请求可能会降级,或者如果存在持续问题,最终我们可能会被迫阻止对该数据库的访问,直到问题得到解决。
解决这种情况可能很简单,只需向数据库添加额外的索引、优化使用的查询或其他同样简单的事情。如果不是,则可能只是将此数据库移动到专用服务的问题,因为它可能已经超出了共享环境。
如果您认为您有解决这种过度使用的方法,我们很乐意与您讨论这种情况,并可能在服务器上恢复数据库。否则,如果专用服务器是最合适的解决方案,我们将很乐意协助您完成升级过程。谢谢您,我们期待很快收到您的来信。
~~~ 过多的 MySQL 活动是由 (a) 一个长时间运行的进程锁定一个表,导致其他查询备份,(b) 一个未优化的查询][示例:select all from ... 并涉及大型或复杂的查询],(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: 1665ITWA81 (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: 1665ITWA81 (IO): 3
创新 10050 0.0 0.0 17964 1340 ? SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新 10200 0.0 0.0 17768 1084 ? SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新 10381 0.0 0.0 18040 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 CST
运行进程:
创新 10050 0.0 0.0 17964 1340 ? SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新 10200 0.0 0.0 17768 1084 ? SN 02:29 0:00 imap [anthonysinclair@creavation.com 90.220.91.59]
创新 10381 0.0 0.0 18040 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:创新研究
状态:
时间:0
命令:睡觉
信息:空
打开连接
当前站点请求:
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']."');";
}*/
?>
这是我们拥有的表格列表:
Table 1: innovere_city Rows = 1,604,640 MyISAM utf8_general_ci 73.8 MiB, Table 2: innovere_country Rows= 247 MyISAM utf8_general_ci 10.7 KiB Table 3: weblocations Rows = 2,449,838 MyISAM utf8_persian_ci 127.1 MiB Table 4: innovere_state Rows: 3,874 MyISAM utf8_general_ci 185.1 KiB Table 5: country Rows = 247 MyISAM utf8_persian_ci 6.3 KiB
我刚刚意识到我们有两个国家/地区表?