Перед тем как код: для цикла должен работать не менее 143,792,640,000 раз и создать таблицу, по крайней мере, произвести 563 760 строк без дублирования Я хочу знать, как ускорить или что-то параллельное таких как Hadoop, которые могли бы ускориться между php и MySQL.Как ускорить запрос PHP к MySQL с большими данными запроса
код ниже:
MySQL соединение
$link=mysql_connect($servername,$username,$password);
mysql_select_db($dbname);
$sql= "INSERT INTO EM (source,target) VALUES ";
цикл чтения данных в функции проверки MySQL, если дубликат не вставлять и количество обновлений = кол + 1
for($i=0;$i<$combine_arr_size;$i++){
for($j=0;$j<$combine_arr_size;$j++){
// ниже проверки если найти дублируемое, как a, b, мы признаем b, a - то же самое
if(check($combine_words_array[$i],$combine_words_array[$j])) {
$update_query="UPDATE EM SET count = count+1 where (source='$combine_words_array[$i]' AND target='$combine_words_array[$j]') OR (source='$combine_words_array[$j]' AND target='$combine_words_array[$i]');";
mysql_query($update_query);
} else {
if (!$link) {
die("Connection failed: " . mysql_error());
}
// иначе, используя вставку в таблицу() значение для конкатенации Строки
$sql.="('$combine_words_array[$i]','$combine_words_array[$j]'),";
mysql_query(substr($sql,0,-1));
$sql= "INSERT INTO EM (source,target) VALUES ";
}
}
}
Прочитайте весь вектор Align от comebine_word_array[]
combine_word_array[]
к
ниже функция проверки, проверьте, если найти пару возвращаемого значения
function check($src, $trg) {
$query = mysql_query("SELECT * FROM EM WHERE (source='$src' AND target='$trg') OR (source='$trg' AND target='$src');");
if (mysql_num_rows($query) > 0) {
return 1;
} else {
return 0;
}
}
стол
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| source | varchar(255) | YES | | NULL | |
| target | varchar(255) | YES | | NULL | |
| count | int(11) | NO | | 0 | |
| prob | double | NO | | 0 | |
+--------+--------------+------+-----+---------+-------+
теперь код PHP только влияет на источник, цели и рассчитывать
143B строк, фу! Как долго это займет ваше производственное оборудование в настоящее время? ':-)' Я полагаю, что многие из них могут быть преобразованы в хранимую процедуру, и это будет работать намного быстрее. Попробуй это первым, может быть? – halfer
Кроме того, можете ли вы добавить к своему вопросу объяснение псевдокода этого алгоритма и что он делает? Возможно, вы делаете что-то действительно неэффективно, и есть лучший/более быстрый способ сделать это. – halfer
(Исправление: 143B итераций, а не строк. Еще много работы!) – halfer