Я замечаю, что у меня очень низкая производительность при вставке или запросах. Сами запросы являются базовыми и могут выполняться без задержек непосредственно из mysql. Сценарий ruby, который я написал, имеет только 1 поток, поэтому используется только 1 соединение, и оно никогда не закрывается, если сценарий не завершен. Довольно простой, я просто пытаюсь вставить много строк. Существует один или два поиска, чтобы получить суррогатный ключ или проверить на наличие дубликатов, но сложность просто O (n). Кроме того, миллионы записей не похожи, поэтому опять же сами запросы не запускаются.
Я использую:
- Рубин 1.9.1
- Gem / драйвер: ruby-mysql 2.9.2
- MySQL 5.1.37-1ubuntu5.1
- ^ все 32-битные версии в 32-битном дистрибутиве Ubuntu
Я получаю около 1-2 вставок в секунду, довольно медленно. Я знаю, что многие люди предложат сменить драйвер, но это означает, что у меня есть некоторый рефакторинг и повторное тестирование. Поэтому я был бы очень признателен за любую помощь, но, пожалуйста, если вы порекомендуете, по крайней мере, скажите, почему вы это делаете ... Например, если вы уже использовали ruby-mysql xxx и обнаружили, что другой драйвер mysql лучше, чем обязательный, " сменить драйвер ».
Что бы я хотел знать:
- Как улучшить производительность с помощью ruby-mysql 2.9.2
- Если и только если я не могу сделать это с ruby-mysql 2.9.2, что мне делать?
- Если бы я заставил сценарий создавать новые потоки для вставки БД, я мог бы ускорить производительность ... это то, что мне нужно сделать?