10. Результаты тестирования СУБД
Возможность оперативной настройки системы Electro на использование целевой СУБД позволяют провести достаточно обьективную оценку их производительности.
Табл.10.1 Запись 1500 строк
СУБД | Скорость, | Оценка размера, |
|
MySQL 3.23, multi REPLACE | 17000 | 40 |
|
MySQL 3.23 | 3700 | 40 |
|
MS SQL-2000 Server | 900 | 30 |
|
MS Access *.mdb | 200..400 | 20..2000 |
|
Borland Interbase 4.2 | 250 | 100 |
|
Borland Interbase 6.5 | 350 | 80 |
|
Informix IDS v.9.40.TC2E1 | 500 | n/a |
|
|
|
|
|
|
|
|
|
Сравним результаты нашего тестирования с данными, опубликованными на сайте MySQL:
Inserting (350768) rows | Seconds |
mysql | 381 |
mysql_odbc | 619 |
db2_odbc | 3460 |
informix_odbc | 2692 |
ms-sql_odbc | 4012 |
oracle_odbc | 11291 |
solid_odbc | 1801 |
sybase_odbc | 4802 |
Reading 2000000 rows by index | Seconds |
mysql | 367 |
mysql_odbc | 464 |
db2_odbc | 1206 |
informix_odbc | 121126 |
ms-sql_odbc | 1634 |
oracle_odbc | 20800 |
solid_odbc | 877 |
sybase_odbc | 17614 |
We have gather some more benchmark results at http://www.mysql.com/information/benchmarks.html
Note that Oracle is not included because they asked to be removed. All Oracle benchmarks have to be passed by Oracle! We believe that makes Oracle benchmarks VERY biased because the above benchmarks are supposed to show what a standard installation can do for a single client.
Таким образом, результаты тестирования системой Electro и данные сайта практически совпадают – MySQL быстрее MS SQL в 6-8 раз. Применение оператора REPLACE в режиме вставки нескольких строк одновременно увеличивают разрыв еще в 3 раза (MySQL / MSSQL = 20)!
Использование REPLACE для множественной вставки данных. Для повышения производительности системы при занесении данных целесообразно использовать расширенный синтаксис оператора INSERT:
INSERT INTO Trend(ObjId,DT,Val)
VALUES(101,1000000,4.5), (101,1000100,5.5) (101,1000200,5.5) (101,1000300,6.5);
Однако, вероятность коллизии (когда некоторая строка данных уже существует) к сожалению снижает эффективность работы – при возникновении ошибки вставки набора строк необходимо переходить на режим построчной вставки.
В MySQL имеется оператор REPLACE с синтаксисом INSERT. При обнаружении коллизии вставки автоматически выполняются действия аналогичные оператору UPDATE.