1

Мне нужно создать временные метки базы данных для изоляции моментальных снимков MVCC. Типичный метод используется:Параметр одновременной базы данных MVCC

«транзакционные действия осуществляются в SI-ТМЕ следующие ТМ НАЧАТЬ:. Логический снимок для транзакции генерируется путем получения уникальной метки времени с использованием атомного приращения к глобальному временной метке счетчику. "

Проблема с использованием этого подхода в системе с сотнями ядер заключается в том, что она не масштабируется. Существует ли аппаратный предел в 10 миллионов атомных инкрементов в секунду на предмет оспариваемой памяти.

Любые идеи?

ответ

0

Вот два простых идей, и справочный документ:

1) Вместо того, чтобы приращение счетчика на 1, увеличение его на N, эффективно давая клиентам широкий выбор идентификаторов транзакций [C, C + N). Например, если N = 5, и начальное значение счетчика равно 1, то клиенты А, В, и С, получили бы следующее:

A: [1, 2, 3, 4, 5] 
B: [6, 7, 8, 9, 10] 
C: [11, 12, 13, 14, 15] 

В то время как это уменьшает давление на атомном счетчика, так как мы можно увидеть из этого примера, некоторые клиенты (например, клиент C) получат относительно высокий диапазон идентификаторов, в то время как другие получат более низкие диапазоны (клиент A), и это приведет к более высоким коэффициентам прерывания в системе.

2) Диапазоны использования чередующиеся идентификаторы транзакций. Это похоже на 1, но мы добавили шаговую переменную S. Вот простой пример: если N = 5 и S = ​​3, а начальное значение счетчика равно 1, клиенты AB и C получат следующее:

A: [1, 4, 7, 10, 13] 
B: [2, 5, 8, 11, 14] 
C: [3, 6, 9, 12, 15] 

Это, кажется, решена проблема 1, но считает клиент D:

D: [16, 19, 22, 25, 28] 

Теперь мы вернулись к той же проблеме, что решение # 1 было. Трюки должны быть воспроизведены с помощью этой техники, чтобы «правильно понять».

3) Интересно, но более сложная, децентрализованный способ присваивающих идентификаторов транзакций описано здесь:

Tu, Стивен, Wenting Чжэн, Эдди Колера, Лисков, и Сэмюэль Мэдден. «Быстрые транзакции в многоядерных базах памяти». В материалах двадцать четвертого симпозиума ACM по принципам операционных систем, стр. 18-32. ACM, 2013.