Действительно ли MySQL Connector/JDBC ориентирован на многопотоковое исполнение?

При выполнении большой сортировки и фильтрации можно понравиться некоторые функции помощника.

m = [
 ['4', '21', '1', '14', '2008-10-24 15:42:58'], 
 ['3', '22', '4', '2somename', '2008-10-24 15:22:03'], 
 ['5', '21', '3', '19', '2008-10-24 15:45:45'], 
 ['6', '21', '1', '1somename', '2008-10-24 15:45:49'], 
 ['7', '22', '3', '2somename', '2008-10-24 15:45:51']
]

# Sort and filter helpers.
sort_on   = lambda pos:     lambda x: x[pos]
filter_on = lambda pos,val: lambda l: l[pos] == val

# Sort by second column
m = sorted(m, key=sort_on(1))

# Filter on 4th column, where value = '2somename'
m = filter(filter_on(3,'2somename'),m)
16
задан Emil H 30 July 2009 в 22:12
поделиться

2 ответа

Транзакции запускаются / фиксируются для каждого соединения. Если вы не делаете какие-то очень специфические вещи (я не могу придумать пример, где это было бы оправдано, если честно), вам лучше с пулом соединений и подключением для каждого потока.

10
ответ дан 30 November 2019 в 22:55
поделиться

Если autocommit = 1, то вполне возможно, чтобы несколько потоков использовали одно и то же соединение, при условии, что доступ к соединению синхронизирован. Если autocommit = 0, вам придется контролировать доступ к соединению через какой-то мьютекс, пока не произойдет фиксация.

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

4
ответ дан 30 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

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