> For the complete documentation index, see [llms.txt](https://nas-3.gitbook.io/nasdatabase/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nas-3.gitbook.io/nasdatabase/database/fasterdatabase.md).

# FasterDatabase

Класс FasterDatabase - наследник от обычного класса `Database`. Основная его идея в ускорение работы базы через добавление многопоточности.

{% hint style="info" %}
NASDataBaseAPI.Server.Data.FasterDatabase
{% endhint %}

Нет, `Database` тоже поддерживает многопоточность, но `FasterDatabase` возводит это в абсолют. Это может быть эффективно при больших объемах данных, но с потеряй оперативной памяти. Так как в нескольких потоках будет находится несколько баз данных, которые будет независимо друг от друга работать. Но это будет так происходить только при сложных вызовах с перебором всех кластеров. Именно поэтому вводиться новая переменная `MaxDegreeOfParallelism`, она описывает количество одновременно работающих потоков (по умолчанию 4).&#x20;

Вот пример его работы на одном из его методов

```csharp
public override void RemoveColumn(string ColumnName)
{
    lock (Columns)
    {
        Parallel.For(1, Settings.CountClusters, new ParallelOptions()
        {
                MaxDegreeOfParallelism = MaxDegreeOfParallelism
        },
        i =>
        {
                 var Database = _LoadDatabase((int)i);

                 Database[ColumnName].ClearBoxes();

                 DataBaseSaver.SaveAllCluster(Settings, (uint)i, Columns.ToArray());
         });
         Settings.ColumnsCount -= 1;
         _RemoveColumn?.Invoke(ColumnName);     
        }
    }
```

Основное нововведение по мимо переопределенных [методов](/nasdatabase/database/class-database/methots.md) класса `Database` это поле `MaxDegreeOfParallelism.` Оно отвечает за максимальное количество потоков во время выполнения сложных алгоритмов.&#x20;

## Конструкторы

Основной конструктор класса отличается от [конструктора Database](/nasdatabase/database/class-database/constructors.md) лишь новым параметром отвечающим за количество потоков в сложных методах.&#x20;

```csharp
public FasterDatabase(int countColumn, DataBaseSettings.DatabaseSettings settings, int loadedSector = 0, int MaxDegreeOfParallelism = StandardNumberExecutingThreads)
    : base(countColumn, settings, loadedSector)
{
    this.MaxDegreeOfParallelism = MaxDegreeOfParallelism;
}
```
