2013-09-26 5 views
2

Я хотел бы узнать, есть ли способ измерения временной разницы во времени и потребления ресурсов (memory) между перезаписью файла и обновлением базы данных mysql. Давайте просто предположим, что я обновляю одну строку, НО с двумя утверждениями. Значение я бы должно принести базу данных для результата первых как:написание текстового файла или обновление базы данных

SELECT personName FROM emplyees WHERE id = 1

затем с неправдоподобным, что именем, которое я бы обновить

UPDATE employees SET personName = 'foo' WHERE personsName = '$queryResult'

Теперь все, что запрос больше просто перезаписать файл, как-то вроде этого

$file = 'personName.txt'; 
fwrite(fopen($file, 'w'), 'newName'); 

Я угадываю, конечно, перезапись g файл занимает меньше времени и ресурсов, но до и до какой степени? Как много heaver должен иметь файл, чтобы рассмотреть выбор запроса для выполнения аналогичной задачи?

Как и в случае с дикой догадкой, я думаю, что wrtting в файл будет в 10 раз быстрее, чем обновление строки, но если у кого-то есть лучшее объяснение и практические руководства о том, как получить точную информацию, было бы полезно.

благодаря

+0

Если у вас есть только один сотрудник, то файл, вероятно, проще, но если у вас есть 100 сотрудников и вы хотите получить один из них или обновить или удалить какие-либо из них, то определите, d нужно сделать это. Если вы храните данные в виде массива в своем файле, то насколько эффективно вы можете найти сотрудников, чья зарплата составляет более 20000 долларов в год, или кто ушел забронированный на сегодня –

+0

Ну, может быть, это был не очень хороший пример, особенно потому, что я буду применяя более продвинутый подход к чтению/записи файла, который будет выполнен в 'SplFileObject()', поэтому это не проблема, и я думаю, что у меня было бы max about .. допустим, 10 сотрудников, и вам придется обновлять 4 детали о них. Таким образом, «SplFileObject» дает мне гибкость, но то, о чем я беспокоюсь, - это не возможность узнать потребление ресурсов и скорость выполнения сценария для выполнения. @MarkBaker – ANW

+0

Даже с SplFileObject вам потребуется загрузить весь файл в память или сделать пошаговую запись для обновления отдельных записей сотрудников - если файлы ISAM поддерживаются, чтобы вы могли работать с отдельными (индексированные) записи данных из файла, это было бы намного проще –

ответ

1

Цель: измерить время, необходимое для обновления столбца строки в таблице MySQL с одной строки по сравнению overriting файл с одной и той же строки в файловой системе.

Рассмотрим, хотите ли вы время, необходимое для подключения к MySQL сервер и разъединить быть включен (я получил кишка чувство они занимают больше времени, чем сам запрос)

... 
$val = $_SERVER['REMOTE_ADDR'] 
$start = microtime(true); 

$con=mysqli_connect("example.com","user","pass","my_db"); 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 
$mysqli->query("UPDATE employees SET personName= '$val'"); 
$mysqli->close(); 

echo "Time taken for MySQL: ".microtime(true)-$start."s"; 

$start = microtime(true); 

$file = 'personName.txt'; 
$fpointer = fopen($file, 'w'); 
fwrite($fpointer, $val); 
fclose($fpointer); 

echo "Time taken for FileSystem: ".microtime(true)-$start."s"; 
... 

Дайте нам знать результаты :)

+0

Хотя вы правы, но это не имеет никакого отношения к безопасности. Это простой тривиальный текст, который требует обновления со временем. – ANW

+0

Я ничего не говорил о безопасности. Не могли бы вы прояснить, изучаете ли вы анализ производительности MySQL и файловой системы? Если нет, то расскажите нам больше о том, какие данные вы должны хранить, как часто вы собираетесь писать/читать, ожидаемый размер. Если вы занимаетесь бенчмаркингом, не могли бы вы сказать, что именно вы хотите сравнить? Сколько наносекунд требуется для переопределения одной таблицы с одиночной строкой, содержащей один столбец, для записи одного слова в файл? Если это так, в первую очередь вам нужно отказаться от PHP, так как это не для бенчмаркинга. – alandarev

+0

Речь идет о бенчмаркинге, я думаю, я должен был упомянуть об этом в первую очередь. Подумайте, как будто я писал что-то в файле/базе данных на каждой странице обновления. Что-то так же просто, как '$ _SERVER ['REMOTE_ADDR']' но, оно перезапишет существующие данные, будь то внутри файла/базы данных. – ANW

Смежные вопросы