Параллелизм BerkeleyDB

Внедрить IEnumerable. См. Использование итераторов (Руководство по программированию на C #)

В вашем случае вы можете просто использовать встроенный итератор List следующим образом:

using System;
using System.Collections.Generic;

class csWordSimilarity : IEnumerable {
    public int irColumn1 = 0;
    public int irColumn2 = 0;
    public int irColumn3 = 0;
    public int irColumn4 = 0;
    public int irColumn5 = 0;

    public IEnumerator GetEnumerator() {
        return (new List() { 
            irColumn1, irColumn2, irColumn3, irColumn4, irColumn5 
        }).GetEnumerator();
    }
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
        return GetEnumerator();
    }
}

30
задан Peter Featherstone 24 August 2017 в 09:07
поделиться

5 ответов

Это зависит от того, какое приложение Вы создаете. Создайте представительный сценарий тестирования и начните усердно работать. Затем Вы будете знать категорический ответ.

Помимо Вашего варианта использования, это также зависит от ЦП, памяти, системной шины, операционной системы, параметров кэширования, и так далее.

Серьезно, просто протестируйте свой собственный сценарий.

, Если Вам нужны некоторые числа (который на самом деле ничего не может означать в Вашем сценарии):

14
ответ дан 28 November 2019 в 00:21
поделиться

Я сильно соглашаюсь с точкой зрения Daan: создайте тестовую программу и удостоверьтесь путь, которым она получает доступ к имитаторам данных максимально тесно шаблоны, которые Вы ожидаете, что Ваше приложение будет иметь. Это чрезвычайно важно с BDB, потому что различные схемы доступа приводят к совсем другой пропускной способности.

Кроме этого, это общие факторы, которые я нашел, чтобы быть основного влияния на пропускную способность:

  1. Метод доступа (то, которое в Вашем случае я предполагаю, является B-ДЕРЕВОМ).

  2. Уровень постоянства, с которым Вы настроили DBD (например, в моем случае флаг среды 'DB_TXN_WRITE_NOSYNC' улучшил производительность записи порядком величины, но это ставит под угрозу постоянство)

  3. рабочий набор помещается в кэш?

  4. Количество Чтений По сравнению с Записями.

  5. , Насколько распространенный Ваш доступ (помнят, что B-ДЕРЕВО имеет блокировку уровня страницы - настолько получающие доступ различные страницы с различными потоками являются большим преимуществом).

  6. Схема доступа - meanig, как, вероятно, потоки, чтобы заблокировать друг друга или даже зайти в тупик, и что является Вашей политикой разрешения мертвой блокировки (этот может быть уничтожителем).

  7. Аппаратные средства (диск & память для кэша).

Это составляет следующий момент: Масштабирование решения на основе DBD так, чтобы это предложило больший параллелизм, имеет два ключевых способа идти об этом; или минимизируйте количество, привязывает Ваш дизайн, или добавьте больше аппаратных средств.

7
ответ дан 28 November 2019 в 00:21
поделиться

Разве это не зависит от аппаратных средств, а также количества потоков и материала?

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

4
ответ дан 28 November 2019 в 00:21
поделиться

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

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

, О, и другая вещь: избегайте переключателей процесса, если Вы можете - пакетные вещи.

<час>

, О, я должен ясно дать понять это: это все произошло во время выполнения, не во время разработки.

2
ответ дан 28 November 2019 в 00:21
поделиться

Путем я понимаю вещи, Samba создал tdb для разрешения "нескольких параллельных устройства записи " для какого-то конкретного файла базы данных. Таким образом, если Ваша рабочая нагрузка имеет несколько устройств записи, Ваша производительность может быть плохой (как в, проект Samba принял решение записать свою собственную систему, по-видимому, потому что это не было довольно производительностью DB Беркли в этом случае).

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

2
ответ дан 28 November 2019 в 00:21
поделиться
Другие вопросы по тегам:

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