За последние 24 часа нас посетили 16496 программистов и 1551 робот. Сейчас ищут 2075 программистов ...

Постояное добавление в БД новых записей

Тема в разделе "MySQL", создана пользователем joost, 21 июл 2008.

  1. joost

    joost Guest

    БД на виртуальном выделеной сервере.
    Задача организовать постояное добавление информации.
    Что если в БД (именно в одну таблицу) будет постояно добавлятся около 1000 записей в минуту? Чем грозит для БД?
    Как избежать "#1194 - Table 'data' is marked as crashed and should be repaired " ?
     
  2. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    а всего записей сколько в таблице?
     
  3. joost

    joost Guest

    каждый день таблица будет очищатся и наполнятся по новой (новыми, актуальными данными)

    всего за день в таблицу будет добавлено 1 000 000 записей
     
  4. joost

    joost Guest

    Вот поставил счас в крон на каждую минуту добавление по 60 записей (по 1 записи в секунду).
    За минут 7-8 сервер повис. Сможет ли помочь увеличение частоты процесора и памяти ?
    Сейчас виртуальный выделеный:процессор 300 МГц , памяти 64 метра.
     
  5. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    какой процесс его повесил?
     
  6. joost

    joost Guest

    скрипт, который добавляет новые записи
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    joost
    В данном случае актуальнее наверное будет увеличение частоты процессора.
     
  8. joost

    joost Guest

    А как вообще можно добавить в таблицу большое количество данных без напряга для сервера?
    Надо записывать около 5000 записей (размером 236 Bytes * 5000) в минуту. Как правильно организовать все это?
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    joost
    5000 записей в минуту - это вообще-то ерунда. Что-то другое виновато, не мускул.
     
  10. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Для VPS с 300 Mhz и 64 Mb это не ерунда :)
     
  11. joost

    joost Guest

    Sergey89
    до каких показателей VPS надо модернизировать ?
    P/S в рамках розумного!
     
  12. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Если у тебя VPS от FirstVDS, то забей. Тормозит на любом тарифном плане.
     
  13. Anonymous

    Anonymous Guest

    точно, тектоник - наше все. ;)
     
  14. joost

    joost Guest

    Sergey89
    ага


    и что делать?
     
  15. joost

    joost Guest

    Вроде не сложный скрипт, а "ложит" сервер
    Запускаю его в кроне раз в каждую минуту
    PHP:
    1.  
    2. <?php
    3. print date("H:m:i")."<br>";
    4. include ("connect");
    5.  
    6.  
    7. $code_firma=63;
    8.  
    9. $sql_page=mysql_query("select * from url where code_firma=$code_firma and code_new=1 limit 60 ");
    10. $kilk_page=mysql_num_rows($sql_page);
    11.  
    12. //$kilk_page=1;
    13.  
    14. $sql_firma=mysql_query("select * from firma where code_firma=$code_firma");
    15. $firma=mysql_fetch_array($sql_firma);
    16.  
    17. $url_firma=$firma[3];
    18.  
    19.  
    20. $main_url=str_replace('http://www.','',$url_firma);
    21. $main_url_regular=str_replace('.','\.',$main_url);
    22.  
    23. for ($k=0;$k<$kilk_page;$k++)
    24. {
    25.  
    26. $page_data=mysql_fetch_array($sql_page);
    27.  
    28.  
    29. $page=file_get_contents("$url_firma/$page_data[1]");
    30. //$page=file_get_contents("4.htm");
    31.  
    32.  
    33. //begin url
    34. $kilk_url=preg_match_all("/href=\"(http:\/\/(www\.)?$main_url_regular\/)?(.*)\"/isU",$page,$url)."<br>";
    35.  
    36.  
    37. for ($i=0;$i<$kilk_url;$i++)
    38. {
    39.  $url_page=preg_replace("/http:\/\/(www\.)?$main_url\//","",htmlentities($url[3][$i]));
    40.  
    41.  
    42. if ((substr_count($url_page,'http')>0) or (strlen($url_page)==0) or (substr_count($url_page,'javascript')>0) or (substr_count($url_page,'#')>0))
    43.     {}
    44.     else
    45.     {
    46.          $arr_page[]=$url_page;
    47.  
    48.     }
    49. }
    50.  
    51. //mysql_query("update url set code_new=0 where name_url like '$page_data[1]' ");
    52.  
    53. //end url
    54. //begin data
    55.  
    56. print $page_data[1]."<br><br><br>";
    57. print $kilk_data=preg_match_all("$firma[9]",$page,$data)."<br>";
    58.  
    59. $regular_next=$firma[10];
    60. for ($m=0;$m<$kilk_data;$m++)
    61. {
    62.  
    63.     for ($k=0;$k<strlen($regular_next);$k++)
    64.     {
    65.         print $data[$regular_next[$k]][$m]."<br>";
    66.  
    67.     }
    68. $name_data=$data[$regular_next[0]][$m];
    69. $url_data=$data[$regular_next[1]][$m];
    70. $url_img=$data[$regular_next[2]][$m];
    71. $coment=$data[$regular_next[3]][$m];
    72. $cina=$data[$regular_next[4]][$m];
    73. mysql_query("insert into `data_index` values ('0','$name_data', '$url_data', '$url_img', '$coment', '$cina', '$code_firma')");
    74.  
    75.     //name_data, url_data, url_img, coment, cina
    76. }
    77.  
    78. if ($kilk_data>0)
    79.     {
    80. mysql_query("update url set code_page_data=1 where name_url like '$page_data[1]' ");
    81.     }
    82. //end data
    83.  
    84.  
    85. }
    86.  
    87. print count($uniq_page=array_unique($arr_page))."<br>";
    88.  
    89. foreach($uniq_page as $value)
    90. {
    91. //print $value."<br>";
    92.  
    93. if (mysql_num_rows(mysql_query("select code_url from url  where name_url like '$value' "))==0)
    94.     {
    95. mysql_query("insert into url values ('','$value','$code_firma','0','1')");
    96.  
    97.     }
    98. }
    99.  
    100. print date("H:m:i")."<br>";
    101.  
    102. //print_r ($url);
    103. ?>
    104.  
    На том же сервере работают скрипты закачки xml весом в несколько мегабайт и по 20 000 записей и без проблем за минут 7-8 такой xml заливается
     
  16. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    joost

    попробуй сначала формировать данные в xml, а потом уже заливать в базу.

    имхо, сервер кладется именно запросами к внешним сайтам и обработкой данных.
     
  17. joost

    joost Guest

    DarkElf
    ты прав.

    увеличил частоту процесора до 600 - загрузка всеравно 100%
    память тоже увеличил - теперь ее жрет 30 % (раньше было тоже 100%)

    что же делать?
     
  18. joost

    joost Guest

    может чем то заменить file_get_contents, что-бы при внешних запросах сервер не ложился?
     
  19. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    joost
    У Яндекса спроси ;)
    Вообще, за такое издевательство над сервером могут и с хостинга попросить. Что делаешь-то? Свой поисковик?
     
  20. joost

    joost Guest

    Dagdamor
    чтото типа тематического поисковика (но это громко сказано)
    скрипт собирает цены интернет-магазинов.
    простой грабер - не более.
     
  21. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    joost
    Может, тогда не стоит так торопиться со сбором данных?
    Обработал 50 адресов - сделал паузу, скушал твикс :) потом продолжил.
    Паузы лучше делать через JS, на стороне клиента (админки).
     
  22. joost

    joost Guest

    Dagdamor
    а если адресов 400 000 ?
    и каждые сутки надо обновлять.

    немного поексперементировал - вроде как
    все тормозит. может такое быть?
     
  23. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    joost
    Нет.
     
  24. joost

    joost Guest

    Разве никто не делает граберов?
    Как решаете проблему с нагрузкой при большом количестве внешних вызовов file_get_contents?