|
3 months ago | |
---|---|---|
atree | 3 months ago | |
bin | 3 months ago | |
bufreader | 3 months ago | |
chunkenc | 3 months ago | |
client | 3 months ago | |
conbuf | 3 months ago | |
database | 3 months ago | |
enc | 3 months ago | |
examples | 3 months ago | |
freelist | 3 months ago | |
proto | 3 months ago | |
recovery | 3 months ago | |
timeutil | 3 months ago | |
txlog | 3 months ago | |
README.md | 3 months ago | |
database.ini | 3 months ago | |
database_linux | 3 months ago | |
database_windows | 3 months ago | |
diploma.go | 3 months ago | |
go.mod | 3 months ago | |
go.sum | 3 months ago | |
linux_build.sh | 3 months ago | |
loadtest.ini | 3 months ago | |
loadtest_linux | 3 months ago | |
loadtest_windows | 3 months ago | |
requests.ini | 3 months ago | |
requests_linux | 3 months ago | |
requests_windows | 3 months ago | |
windows_build.sh | 3 months ago |
README.md
- Zip-архів із базою даних на 841 млн показань (791 МБ) можна скачати за посиланням https://drive.google.com/file/d/18oks6STkVpg4-TT2WyCIBBpCgRyF29L2
В архіві 5 файлів: 2.changes 2.snapshot test.data test.index metrics.info
Після розпаковки їх необхідно перемістити в директорію testdir.
- Якщо є бажання експериментувати з пустою базою даних, краще створити нову. Наприклад, назвемо її "x": створюємо директорію xdir, створюємо файл x.ini із такими налаштуваннями: tcpPort = 12345 dir = xdir redoDir = xdir databaseName = x
Запускаємо СУБД із термінала: ./database_linux -c x.ini
Всі операції виконуємо в кореневій директорії проєкту.
-
Файли *.ini: database.ini - налаштування СУБД (database); loadtest.ini - налаштування навантажувального тесту (loadtest); requests.ini - налаштування прикладів запитів (requests).
-
Скомпільоване ПО для Linux (64-бітна архітектура): database_linux - СУБД; loadtest_linux - навантажувального тест; requests_linux - приклади запитів.
-
Скомпільоване ПО для Windows (64-бітна архітектура): database_windows - СУБД; loadtest_windows - навантажувального тест; requests_windows - приклади запитів.
-
Директорія examples має три вкладені директорії із вихідними кодами: database - запуску СУБД; loadtest - навантажувального тесту; requests - різних типів запитів, що підтримуються СУБД.
-
Якщо на комп'ютері встановлено компілятор Go, можна скомпілювати згадані вище програми за допомогою bash-скриптів:
./linux_build.sh ./windows_build.sh
Скомпільовані версії програм опиняться в кореневій директорії проєкту.
-
Файли з даними розміщуються в директорії datadir. В базі даних вже записано 841 млн. показань. Сумарний розмір трохи більше 1.3 GB.
-
Налаштування навантажувального тесту можна змінити, відредагувавши файл loadtest.ini. Опція connections - це кількість одночасно відкритих підключень до СУБД. Опція requestsPerConn - це кількість запитів, які відправляє потік через одне відкрите підключення.
Звіт виглядає наступним чином:
TEST RESULTS: Time: 2 seconds Connections: 100 Requests per conn: 500 Total requests: 50000 AVG request time: 3.121022ms RPS: 26891
listCumulativeMeasures: 3099 (6.2%), AVG request time: 3.785916ms listCumulativePeriods: 12055 (24.1%), AVG request time: 2.726391ms listInstantMeasures: 1974 (3.9%), AVG request time: 6.726605ms listInstantPeriods: 7710 (15.4%), AVG request time: 2.9808ms listCurrentValues: 25162 (50.3%), AVG request time: 2.988301ms
last day: 20382 (82.1%), AVG request time: 2.954718ms last week: 2993 (12.1%), AVG request time: 4.050662ms last month: 708 (2.9%), AVG request time: 8.248486ms random time range: 755 (3.0%), AVG request time: 3.540239ms
Навантажувальний тест відправляє випадкові запити до випадкових метрик. Оскільки на реальному проєкті запити та часові діапазони мають різну ймовірність - я реалізував це в навантажувальному тесті.
Приклад 1: listCurrentValues: 25162 (50.3%) , AVG request time: 2.988301ms означає що відправлено 25162 запитів listCurrentValues, що склало 50.3% від загальної кількості запитів. Середній час виконання (Latency) запитів listCurrentValues склав 2.99 міллісекунди.
Приклад 2: last month: 708 (2.9%), AVG request time: 8.248486ms означає що відправлено 708 запитів на отримання даних за останній місяць, що склало 2.9% від загальної кількості. Середній час виконання (Latency) таких запитів склав 8.25 міллісекунди. Часовий діапазон задається для всіх запитів окрім listCurrentValues.
- Запуск навантажувального тесту: Виконуємо пункт 1.
Запускаємо СУБД із термінала: ./database_linux
Запускаємо тест із іншого термінала: ./loadtest_linux
Чекаємо завершення. Звіт буде надруковано у терміналі після завершення тесту.
Команди для Windows: ./database_windows ./loadtest_windows
- Запуск прикладів запитів: Можна запускати на пустій базі даних (без скачування Zip-архіва із показаннями).
Запускаємо СУБД із термінала: ./database_linux
Запускаємо тест із іншого термінала: ./requests_linux
Результат виконання запитів друкується у терміналі.
Команди для Windows: ./database_windows ./requests_windows
-
Подивитись HELP: ./database_linux -h ./loadtest_linux -h ./requests_linux -h
-
Зупинити СУБД, перервати навантажувальний тест: Ctrl + C