Сравнение производительности пулов соединения JDBC

Когда вы обращаетесь к столбцу DataFrame, вы берете одномерный вектор размера #rows. Если вы хотите иметь второе измерение 1 для каждого элемента, например, вместо [1, 2, 3, 4] вы хотите [[1], [2], [3], [4]], приведите его к NumPy ndarray с атрибутом .values, а затем измените его на размер (-1, 1).

df = pd.DataFrame([1,2,3,4], columns=['C'])
col_c_1 = df['C'].values         # Shape (4,)
col_c_2 = col_c_1.reshape(-1, 1) # Shape (4, 1)

С -1 вы говорите, чтобы заполнить первый размер измерения автоматически.

9
задан bluish 10 January 2012 в 09:47
поделиться

5 ответов

Какое бы соединение пул, который вы используете, вам нужно предположить, что соединение может быть случайным образом закрыто в любой момент, и заставить ваше приложение справиться с этим.

В случае длительного соединения с БД в «доверенной» сети часто происходит следующее: что ОС применяет ограничение по времени на то, как долго соединения могут быть открыты, или периодически запускает некоторый код «очистки соединения». Но причина не имеет большого значения - это просто часть сетевой жизни, и вы должны предполагать, что соединение может быть «вырвано у вас из-под ног», и разобраться с этим сценарием соответствующим образом.

Итак, учитывая это, я действительно могу '

5
ответ дан 4 December 2019 в 21:11
поделиться

Вы пробовали Apache DBCP ? Я не знаю о c3po, но DBCP может обрабатывать незанятые соединения по-разному:

  • Он может удалять незанятые соединения из пула
  • Он может запускать запрос на незанятых соединениях после определенного периода бездействия

Он может также проверьте, действительно ли соединение, непосредственно перед тем, как передать его приложению, выполнив запрос; если он получает исключение, он отбрасывает это соединение и пытается установить другое (или создает новое, если может). Намного надежнее.

1
ответ дан 4 December 2019 в 21:11
поделиться

Эта ошибка выскакивала и с mysql & c3p0 - я пробовал разные вещи и в конце концов избавился от нее. Не могу вспомнить, но что могло решить, это флаг autoReconnect а-ля

url="jdbc:mysql://localhost:3306/database?autoReconnect=true"
1
ответ дан 4 December 2019 в 21:11
поделиться

Возможно, вы захотите взглянуть на некоторые результаты тестов на http://jolbox.com - сайте, на котором размещен BoneCP, пул соединений, который быстрее, чем оба C3P0 и DBCP.

3
ответ дан 4 December 2019 в 21:11
поделиться

Обрыв канала

Это примерно означает, что другая сторона прервала / тайм-аут / закрыла соединение. Разве вы не поддерживаете связи так долго? Убедитесь, что ваш код правильно закрывает все ресурсы JDBC ( Соединение , Заявление и ResultSet ) в блоке finally.

Увеличение тайм-аута соединения mysql увеличивало время ожидания. частота этих ошибок.

Позаботьтесь о том, чтобы этот тайм-аут не превышал собственный тайм-аут базы данных.

0
ответ дан 4 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: