Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Lupti_Du
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 8
#1

Добавить 5 млн записей в БД за секунды PosgreSQL - PHP БД

28.10.2016, 11:10. Просмотров 136. Ответов 0
Метки нет (Все метки)

Есть задание "Добавить 5 млн записей в БД за секунды".

База данных PosgreSQL.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
 
 
$time_start = microtime(true);
ini_set('max_execution_time', 300);
 
require_once 'db-config.php';
 
 
function generateString($length = 15)
{
  $chars = 'qwertyuioplkjhgfdsazxcvbnm';
  $numChars = strlen($chars);
  $string = '';
  for ($i = 0; $i < $length; $i++)
  {
    $string .= substr($chars, rand(1, $numChars) - 1, 1);
  }
  return $string;
}
 
 
 
$fileName = fopen("users.csv", 'a');
 
 
for ($i=0; $i < 1000000 ; $i++)
{
    $firstName = generateString(15);
    $lastName = generateString(15);
    $age = rand(10, 90);
    fputcsv($fileName, [$firstName, $lastName, (string)$age]);
}
 
fclose($fileName);
 
$sql = "COPY users FROM '/home/artur/Documents/Projects/test.com/users.csv' CSV;";
$stmt = $pdo->prepare($sql);
$stmt->execute();
 
$time_end = microtime(true);
$time = $time_end - $time_start;
 
echo "Done! ({$time} seconds)";
 
// Count 10 000
// 28 first
// 26.6 with prepare statements
// Count 100 000
// 1.71 with loop 'for'
// 1.75 with generators
// Count 1 000 000
// 16.92 with loop 'for'
// 17.58 with generators
// Count 1 000 000
// 17.15 fsync = on
// 17.17 fsync = off
?>
<br>
<a href="delete.php">Truncate table and delete csv file</a>
Путем добавления в БД с помощью загрузки файла уменьшил время до полторы минуты.

Пробовал использовать генератор вместо обычного цикла ( только увеличило время )

Пробовал отключать fsync и full_page_writes ( ничего не поменялось ) В настройках конфигурации же это отключать нужно, правильно?

Какие еще есть способы уменьшить время загрузки?
http://www.cyberforum.ru/php-database/thread1803676.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2016, 11:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Добавить 5 млн записей в БД за секунды PosgreSQL (PHP БД):

как перевести секунды в часы, минуты, секунды
как перевести секунды в часы, минуты, секунды ----- например у меня есть...

Работа с большой базой (>1 млн записей)
Товарищи, помогите! Я недавно перешел на C# 2005, меня особенно интересует...

Оптимизация запросов. 3,5+ млн записей в базе. Надо посчитать записи.
И так, сабж. Есть таблица с более чем 3-мя миллионами записей. Выборка...

Создание скрипта, который запишет в таблицу 10 млн записей с Guid
Помогите создать на SQL такой скрипт, который запишет в таблицу 10 млн записей...

Посоветуйте как лучше реализовать обработку порядка 100 млн. записей
Основная суть вопроса в самой теме. Исходные данные в СSV файлах с количеством...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2016, 11:10
Привет! Вот еще темы с решениями:

В Англії проживає 50 млн. чоловік, у Франції 70 млн. чоловік, у Німеччині - 44 млн. чоловік,
В Англії проживає 50 млн. чоловік, у Франції 70 млн. чоловік, у Німеччині - 44...

Файлы posgresql
пользуюсь pgAdmin III, мне нужно что бы в базе был файл(формат файла может быть...

Функции PosgreSQL
Помогите написать функцию (для схемы, прикрепленной ниже), которая бы...

Какую строчку нужно добавить в скрипт рассылки с сайта, чтобы отправка сообщений происходила раз в 3 секунды?
Подскажите, какую строчку нужно добавить в скрипт почтовой рассылки с сайта,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru