133 lines
6.1 KiB
Plaintext
133 lines
6.1 KiB
Plaintext
1. Zip-архів із базою даних на 841 млн показань (791 МБ) можна скачати за посиланням https://drive.google.com/file/d/18oks6STkVpg4-TT2WyCIBBpCgRyF29L2
|
||
|
||
В архіві 5 файлів:
|
||
2.changes
|
||
2.snapshot
|
||
test.data
|
||
test.index
|
||
metrics.info
|
||
|
||
Після розпаковки їх необхідно перемістити в директорію testdir.
|
||
|
||
|
||
2. Якщо є бажання експериментувати з пустою базою даних, краще створити нову. Наприклад, назвемо її "x": створюємо директорію xdir, створюємо файл x.ini із такими налаштуваннями:
|
||
tcpPort = 12345
|
||
dir = xdir
|
||
redoDir = xdir
|
||
databaseName = x
|
||
|
||
Запускаємо СУБД із термінала:
|
||
./database_linux -c x.ini
|
||
|
||
Всі операції виконуємо в кореневій директорії проєкту.
|
||
|
||
3. Файли *.ini:
|
||
database.ini - налаштування СУБД (database);
|
||
loadtest.ini - налаштування навантажувального тесту (loadtest);
|
||
requests.ini - налаштування прикладів запитів (requests).
|
||
|
||
|
||
4. Скомпільоване ПО для Linux (64-бітна архітектура):
|
||
database_linux - СУБД;
|
||
loadtest_linux - навантажувального тест;
|
||
requests_linux - приклади запитів.
|
||
|
||
|
||
5. Скомпільоване ПО для Windows (64-бітна архітектура):
|
||
database_windows - СУБД;
|
||
loadtest_windows - навантажувального тест;
|
||
requests_windows - приклади запитів.
|
||
|
||
|
||
6. Директорія examples має три вкладені директорії із вихідними кодами:
|
||
database - запуску СУБД;
|
||
loadtest - навантажувального тесту;
|
||
requests - різних типів запитів, що підтримуються СУБД.
|
||
|
||
|
||
7. Якщо на комп'ютері встановлено компілятор Go, можна скомпілювати згадані вище програми за допомогою bash-скриптів:
|
||
|
||
./linux_build.sh
|
||
./windows_build.sh
|
||
|
||
Скомпільовані версії програм опиняться в кореневій директорії проєкту.
|
||
|
||
|
||
8. Файли з даними розміщуються в директорії datadir. В базі даних вже записано 841 млн. показань. Сумарний розмір трохи більше 1.3 GB.
|
||
|
||
|
||
9. Налаштування навантажувального тесту можна змінити, відредагувавши файл 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.
|
||
|
||
10. Запуск навантажувального тесту:
|
||
Виконуємо пункт 1.
|
||
|
||
Запускаємо СУБД із термінала:
|
||
./database_linux
|
||
|
||
Запускаємо тест із іншого термінала:
|
||
./loadtest_linux
|
||
|
||
Чекаємо завершення. Звіт буде надруковано у терміналі після завершення тесту.
|
||
|
||
Команди для Windows:
|
||
./database_windows
|
||
./loadtest_windows
|
||
|
||
11. Запуск прикладів запитів:
|
||
Можна запускати на пустій базі даних (без скачування Zip-архіва із показаннями).
|
||
|
||
Запускаємо СУБД із термінала:
|
||
./database_linux
|
||
|
||
Запускаємо тест із іншого термінала:
|
||
./requests_linux
|
||
|
||
Результат виконання запитів друкується у терміналі.
|
||
|
||
Команди для Windows:
|
||
./database_windows
|
||
./requests_windows
|
||
|
||
|
||
12. Подивитись HELP:
|
||
./database_linux -h
|
||
./loadtest_linux -h
|
||
./requests_linux -h
|
||
|
||
|
||
13. Зупинити СУБД, перервати навантажувальний тест:
|
||
Ctrl + C
|