Быстрая вставка строк в базу данных mysql |
Здравствуйте, гость ( Вход | Регистрация )
Быстрая вставка строк в базу данных mysql |
evgen55 |
31.7.2017, 8:56
Сообщение
#11
|
Новичок Группа: Неактивирован Сообщений: 8 Регистрация: 24.7.2017 Пользователь №: 4590 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
lanz |
31.7.2017, 9:06
Сообщение
#12
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Мнгновенно это сколько в миллисекундах?
|
|
|
evgen55 |
1.8.2017, 8:16
Сообщение
#13
|
Новичок Группа: Неактивирован Сообщений: 8 Регистрация: 24.7.2017 Пользователь №: 4590 Спасибо сказали: 0 раз(а) Репутация: 0 |
Прежде всего посмотрите, где у вас задержка, в Qt? При соединении с сервером? На сервере? В зависимости от этого нужно смотреть что конкретно оптимизировать. Любой запрос (сама функция exec) выполняется 40 милисекунд, а в phpmyadmin выполняется мгновенно Отображение строк 0 - 24 (4274 всего, Запрос занял 0.0018 сек.) |
|
|
lanz |
1.8.2017, 9:13
Сообщение
#14
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата Отображение строк 0 - 24 (4274 всего, Запрос занял 0.0018 сек.) Это возможно сравнение яблок с апельсинами. 0.0018 это то что показывает phpmyadmin, я если честно не знаю, как он меряет, что он включает в это время и как вы меряли 40 мс. Приложите пожалуйста минимальный проект с бенчмарком чтобы можно было конкретно уже смотреть. Кроме того - существует ли проблема вообще? Т.е. вы наблюдаете тормоза при вставке или вам просто не нравится число 40? Попробуйте вставить много строк, увеличивается ли время пропорционально? Как вы меряли время? Согласитесь, что несколько странно видеть сишный код в 20 раз медленнее php, не верю |
|
|
evgen55 |
1.8.2017, 10:41
Сообщение
#15
|
Новичок Группа: Неактивирован Сообщений: 8 Регистрация: 24.7.2017 Пользователь №: 4590 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата Отображение строк 0 - 24 (4274 всего, Запрос занял 0.0018 сек.) Это возможно сравнение яблок с апельсинами. 0.0018 это то что показывает phpmyadmin, я если честно не знаю, как он меряет, что он включает в это время и как вы меряли 40 мс. Приложите пожалуйста минимальный проект с бенчмарком чтобы можно было конкретно уже смотреть. Кроме того - существует ли проблема вообще? Т.е. вы наблюдаете тормоза при вставке или вам просто не нравится число 40? Попробуйте вставить много строк, увеличивается ли время пропорционально? Как вы меряли время? Согласитесь, что несколько странно видеть сишный код в 20 раз медленнее php, не верю int id;
Соответственно когда селект возвращает примерно 4000 объектов и внутренний цикл содержит примерно 10-20 item получается слишком долго |
|
|
lanz |
1.8.2017, 11:21
Сообщение
#16
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Во первых QTime на Windows возвращает с точностью кратной то ли 15, то ли 20 мс, в любом случае, это слишком плохо.
Попробуйте QElapsedTimer, интерфейс тот же, а точность обычно лучше. http://doc.qt.io/qt-4.8/qelapsedtimer.html Если все равно 40 мс будет получаться, замерьте время всего цикла(с 40000-80000 вставок) и разделите, тогда получите точное время. 40000-80000 вставок это довольно много, попробуйте все таки execBatch и если не поможет, то попробуйте просто слепить в строке нужный запрос на вставку всех строк за раз и его выполнить - получите скорость вставки напрямую. |
|
|
evgen55 |
2.8.2017, 14:23
Сообщение
#17
|
Новичок Группа: Неактивирован Сообщений: 8 Регистрация: 24.7.2017 Пользователь №: 4590 Спасибо сказали: 0 раз(а) Репутация: 0 |
Во первых QTime на Windows возвращает с точностью кратной то ли 15, то ли 20 мс, в любом случае, это слишком плохо. Попробуйте QElapsedTimer, интерфейс тот же, а точность обычно лучше. http://doc.qt.io/qt-4.8/qelapsedtimer.html Если все равно 40 мс будет получаться, замерьте время всего цикла(с 40000-80000 вставок) и разделите, тогда получите точное время. 40000-80000 вставок это довольно много, попробуйте все таки execBatch и если не поможет, то попробуйте просто слепить в строке нужный запрос на вставку всех строк за раз и его выполнить - получите скорость вставки напрямую. Спасибо большое, слепить запрос в одну строку помогло. execBatch пробовал он не поддерживается |
|
|
Текстовая версия | Сейчас: 28.11.2024, 14:54 |