Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
автор"количественный" вывод: время, затраченное на выборку данных не зависит от количества записей в БД, а зависит от размера данного/записи. что то Вы темните почем Вы там говорите индексы создавали сдается что имели место некоторые предрасчеты при добавлении записей -- Кто - еще до сражения - побеждает предварительным расчетом , у того шансов много (Сунь Цзы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 17:16 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
pgres автор"количественный" вывод: время, затраченное на выборку данных не зависит от количества записей в БД, а зависит от размера данного/записи. что то Вы темните почем Вы там говорите индексы создавали сдается что имели место некоторые предрасчеты при добавлении записей "почем", "почему" или "по чем"? видимо, третье. :) конечно, я создавал его по дате. я уверен, что у заказчика записи аналогичным образом по дате проиндексированы. какие там, интересно, могут быть предрасчеты? или проблема в том, что я строго зафиксировал количество записей на дату? ну и что? что система переберет 40 млн. записей с разным количеством записей на дату, что с одинаковым - один фиг, 40 млн. и будет. С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 17:47 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
заинтриговал сам вывод, противоречащий законам физики > время, затраченное на выборку данных не зависит от количества записей в БД, а зависит от размера данного/записи. прокомментируйте плз -- Кто - еще до сражения - побеждает предварительным расчетом , у того шансов много (Сунь Цзы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 17:51 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
pgresзаинтриговал сам вывод, противоречащий законам физики > время, затраченное на выборку данных не зависит от количества записей в БД, а зависит от размера данного/записи. прокомментируйте плз а ведь все банально просто - структура индексирована, следовательно поиска дат по всей таблице не происходит, во время выборки снимаются нужные значения сразу "под" нужной датой. и причем тут физика? а вот "размер данного" - это да, система дольше читает. С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 17:57 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov pgres так что давайте кашисты не изворачивайтесь а делайте придложенный тест хорошо, привожу результаты тестирования. в связи с тем, что заказчик теста не указал размер записи, тестировались 2 структуры: a) Код: plaintext 1. b) Код: plaintext 1. $random(1000) - "продолжительность звонка" в секундах и $random(86400) -"время звонка" во внутреннем 5-значном формате. с учетом пожеланий заказчика было выбрано такое кол-во записей на сутки, чтобы за 31 день получить выборку в 40 млн. записей. размер БД - 261.3 млн. записей/узлов (3.7Gb), больше не позволяет FAT32. спешу заверить и заказчика, и оппонентов, что тестирование доказало независимость скорости выборки и обработки данных от количества записей в БД. оборудование и софт: AMD 2500+ (1.8Ghz)/1Gb, IDE HDD 120Gb 7200, Windows 2k Professional SP3, Cache 5.0.11 приоритеты задач и "разгрузка" компьютера: нет. тестирование проходило при обычной загрузке: IE, winamp и прочая лабуда вроде AVP, Far и ICQ. методика тестирования: выбирались данные за 31 день (40.3 млн. записей), начальная дата выбиралась случайным образом, выборка проводилась 100 раз. вычислялись следующие значения: 1. число выбранных записей 2. сумма "продолжительности звонков" в часах за сутки 3. средняя "продолжительность звонка" за сутки 4. время, затраченное на обработку суточной выборки 5. время, затраченное на весь тест результаты тестирования по структурам: a) 87-90 секунд, независимо от даты начала выборки. b) 126-129 секунд, независимо от даты начала выборки. "количественный" вывод: время, затраченное на выборку данных не зависит от количества записей в БД, а зависит от размера данного/записи. главный вывод: это, как я уже говорил, несерьезный тест. ни оборудование, ни загруженность СУБД, ни размерность записей не уравнены. разве можно делать какие-то серьезные выводы? С уважением. Сергей Вот хоть что-то конкретное. Тест конечно не совсем корректный т.к. структура данных совсем упрощена вследствии чего объем данных совсем маленький. 3.7 Gb это не серьезно (Кстати очеь большой объем для 2 то полей) Вот примерная структура таблицы на которой я тестировал CREATE TABLE "TTALKS" ( "PHONE_NUMBER" VARCHAR2(15), "PHONE_CALL" VARCHAR2(15), "DATE_CONNECT" DATE, "MNEMONIC_IN" VARCHAR2(3), "MNEMONIC_OUT" VARCHAR2(3), "OVERTIME" CHAR(1), "LENTALK" NUMBER(6), "FILIAL_ID" NUMBER(3), "SCHEMA" VARCHAR2(9), "ID" NUMBER(10), "ID_CALL" NUMBER(10), "TYPE_CONNECT" CHAR(1), "LENTALK_MINUTES" NUMBER(4), "LENTALK_ACCRUAL" NUMBER(4), "TARIFF" NUMBER(10, 2), "TARIFF_ID" NUMBER(4), "SUMTALK" NUMBER(20, 5), "NDS_SUMTALK" NUMBER(20, 5), "DATE_OF_COUNT" DATE, "REASON_OTSEV" NUMBER(2), "SERVICE" VARCHAR2(4), "AOP_ID" NUMBER(3), "AOP_ID_CALL" NUMBER(3), "ID_PAY" NUMBER(10), "PHONE_FULL_A" VARCHAR2(15) ) Если считать что все записи строки то примерно 217 байт на запись (поля типа дата\время я посчитал по 20 байт) что составляет в вашем случае 217*261300000 = 56702100000 байт = 53 Гб. Это без индексов. А индексы нужны практически по всем полям (кроме тех что хранят количественные показатели). Даже на таком сильно урезаном тесте в однопользовательском варианте (у меня на сервере еще более сотни человек работало выполняло запросы и вставку данных) производительность у вас всего примерно в 2 раза выше. Где декларируемая в Каше производительность в 5 раз выше чем у реляционных БД? Если добавить в тест условие что необходимо обеспечить выборки данных с условиями по многим полям то результат я думаю будет еще хуже. Мне для выборки всех данных потребовалось написать 1 запрос (привожу ниже). Если не секрет поделитесь своим кодом. select to_char(t.date_connect, 'mm.yyyy') as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", avg(t.lentalk) / 60 as "Ср. время разговора в минутах" from ttalks t where t.date_connect between to_date('01.3.2005', 'dd.mm.yyyy') and to_date('31.03.2005 23:59:59', 'dd.mm.yyyy hh24:mi:ss') group by to_char(t.date_connect, 'mm.yyyy') Результат выполнения запроса 1 строка с данными за 1 месяц (что-то типа такого): 03.2005 41714548 1636542.161 2.353915705 Время выполнения - 94,7 с. Вы видимо сделали группировку за месяц. В первый раз я имел ввиду запрос с группировками по дням select to_char(t.date_connect, 'dd.mm.yyyy') as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", avg(t.lentalk) / 60 as "Ср. время разговора в минутах" from ttalks t where t.date_connect between to_date('01.3.2005', 'dd.mm.yyyy') and to_date('31.03.2005 23:59:59', 'dd.mm.yyyy hh24:mi:ss') group by to_char(t.date_connect, 'dd.mm.yyyy') В результате возвращается выборка из 31 записа с результатами на каждый день. Что-то типа этого: 01.03.0005 1460834 57702.9437222222 2.37550710512518 02.03.0005 1662122 65709.9997222222 2.37272681051328 ...... 22.03.0005 1373366 51959.0136666666 2.27656501779704 ........ Я тут немного поэксперементировал и получил время работы запроса 105 с. Чтоб не говорили что увидев ваш результат я быстро подделал свой привожу пример того запроса который работает примерно 200 - 230 с. select to_date(t.date_connect, 'dd.mm.yyyy') as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", avg(t.lentalk) / 60 as "Ср. время разговора в минутах" from ttalks t where t.date_connect between to_date('01.3.2005', 'dd.mm.yyyy') and to_date('31.03.2005 23:59:59', 'dd.mm.yyyy hh24:mi:ss') group by to_date(t.date_connect, 'dd.mm.yyyy') Так что при условии оптимизации запросов я получил результат не хуже вашего на гораздо больших объемах и большей нагрузке на систему. Отсюда можно сделать вывод что никакого существенного выигрыша (в 5 раз как заявляют представители interSystems например) М системы по сравнению с РСУБД не дают (по крайней мере в данном тесте). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 03:48 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Joker_YaВот хоть что-то конкретное. Тест конечно не совсем корректный т.к. структура данных совсем упрощена вследствии чего объем данных совсем маленький. 3.7 Gb это не серьезно а я и говорю, что тест несерьезный. надо было сразу показывать свою структуру. впрочем, речь шла, как я понимаю, о кол-ве записей, а не о их размере, так что мне пришлось поджаться, размещая нужное кол-во в 4Gb. (Кстати очеь большой объем для 2 то полей) не стоит забывать, что это таблица + индекс по дате Где декларируемая в Каше производительность в 5 раз выше чем у реляционных БД? Если добавить в тест условие что необходимо обеспечить выборки данных с условиями по многим полям то результат я думаю будет еще хуже. я бы сказал, что измерение производительности СУБД на последовательном переборе данных не есть правильное тестирование. Мне для выборки всех данных потребовалось написать 1 запрос (привожу ниже). Если не секрет поделитесь своим кодом. пожалуйста, если Вам это что-нибудь даст. как видите, общего - 0. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. select to_char(t.date_connect, 'mm.yyyy') as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", ^^^^^^^^^^^^^ а вот такие вещи надо уточнять. я, как умная Маша, высчитываю продолжительность в часах по КАЖДОЙ записи. так что я, конечно, пересчитаю по-Вашему, а Вам советую сделать по-моему и сравнить, ага. :) Время выполнения - 94,7 с. Вы видимо сделали группировку за месяц. В первый раз я имел ввиду запрос с группировками по дням нет, я делал по дням. В результате возвращается выборка из 31 записа с результатами на каждый день. Что-то типа этого: 01.03.0005 1460834 57702.9437222222 2.37550710512518 02.03.0005 1662122 65709.9997222222 2.37272681051328 ...... 22.03.0005 1373366 51959.0136666666 2.27656501779704 ........ пожалуйста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Я тут немного поэксперементировал и получил время работы запроса 105 с. убрав вычисление часов по КАЖДОЙ записи, я тоже оптимизировал выборку - 60-62 с. Так что при условии оптимизации запросов я получил результат не хуже вашего на гораздо больших объемах и большей нагрузке на систему. Отсюда можно сделать вывод что никакого существенного выигрыша (в 5 раз как заявляют представители interSystems например) М системы по сравнению с РСУБД не дают (по крайней мере в данном тесте). отсюда можно сделать только один правильный вывод: сравнивать можно только в одинаковых производственных условиях и на одинаковом оборудовании. и не только на последовательном переборе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 08:26 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Joker_Ya Sergei Obrastsov pgres так что давайте кашисты не изворачивайтесь а делайте придложенный тест хорошо, привожу результаты тестирования. в связи с тем, что заказчик теста не указал размер записи, тестировались 2 структуры: a) Код: plaintext 1. b) Код: plaintext 1. $random(1000) - "продолжительность звонка" в секундах и $random(86400) -"время звонка" во внутреннем 5-значном формате. с учетом пожеланий заказчика было выбрано такое кол-во записей на сутки, чтобы за 31 день получить выборку в 40 млн. записей. размер БД - 261.3 млн. записей/узлов (3.7Gb), больше не позволяет FAT32. спешу заверить и заказчика, и оппонентов, что тестирование доказало независимость скорости выборки и обработки данных от количества записей в БД. оборудование и софт: AMD 2500+ (1.8Ghz)/1Gb, IDE HDD 120Gb 7200, Windows 2k Professional SP3, Cache 5.0.11 приоритеты задач и "разгрузка" компьютера: нет. тестирование проходило при обычной загрузке: IE, winamp и прочая лабуда вроде AVP, Far и ICQ. методика тестирования: выбирались данные за 31 день (40.3 млн. записей), начальная дата выбиралась случайным образом, выборка проводилась 100 раз. вычислялись следующие значения: 1. число выбранных записей 2. сумма "продолжительности звонков" в часах за сутки 3. средняя "продолжительность звонка" за сутки 4. время, затраченное на обработку суточной выборки 5. время, затраченное на весь тест результаты тестирования по структурам: a) 87-90 секунд, независимо от даты начала выборки. b) 126-129 секунд, независимо от даты начала выборки. "количественный" вывод: время, затраченное на выборку данных не зависит от количества записей в БД, а зависит от размера данного/записи. главный вывод: это, как я уже говорил, несерьезный тест. ни оборудование, ни загруженность СУБД, ни размерность записей не уравнены. разве можно делать какие-то серьезные выводы? С уважением. Сергей Вот хоть что-то конкретное. Тест конечно не совсем корректный т.к. структура данных совсем упрощена вследствии чего объем данных совсем маленький. 3.7 Gb это не серьезно (Кстати очеь большой объем для 2 то полей) Вот примерная структура таблицы на которой я тестировал CREATE TABLE "TTALKS" ( "PHONE_NUMBER" VARCHAR2(15), "PHONE_CALL" VARCHAR2(15), "DATE_CONNECT" DATE, "MNEMONIC_IN" VARCHAR2(3), "MNEMONIC_OUT" VARCHAR2(3), "OVERTIME" CHAR(1), "LENTALK" NUMBER(6), "FILIAL_ID" NUMBER(3), "SCHEMA" VARCHAR2(9), "ID" NUMBER(10), "ID_CALL" NUMBER(10), "TYPE_CONNECT" CHAR(1), "LENTALK_MINUTES" NUMBER(4), "LENTALK_ACCRUAL" NUMBER(4), "TARIFF" NUMBER(10, 2), "TARIFF_ID" NUMBER(4), "SUMTALK" NUMBER(20, 5), "NDS_SUMTALK" NUMBER(20, 5), "DATE_OF_COUNT" DATE, "REASON_OTSEV" NUMBER(2), "SERVICE" VARCHAR2(4), "AOP_ID" NUMBER(3), "AOP_ID_CALL" NUMBER(3), "ID_PAY" NUMBER(10), "PHONE_FULL_A" VARCHAR2(15) ) Если считать что все записи строки то примерно 217 байт на запись (поля типа дата\время я посчитал по 20 байт) что составляет в вашем случае 217*261300000 = 56702100000 байт = 53 Гб. Это без индексов. А индексы нужны практически по всем полям (кроме тех что хранят количественные показатели). Даже на таком сильно урезаном тесте в однопользовательском варианте (у меня на сервере еще более сотни человек работало выполняло запросы и вставку данных) производительность у вас всего примерно в 2 раза выше. Где декларируемая в Каше производительность в 5 раз выше чем у реляционных БД? Если добавить в тест условие что необходимо обеспечить выборки данных с условиями по многим полям то результат я думаю будет еще хуже. Мне для выборки всех данных потребовалось написать 1 запрос (привожу ниже). Если не секрет поделитесь своим кодом. select to_char(t.date_connect, 'mm.yyyy') as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", avg(t.lentalk) / 60 as "Ср. время разговора в минутах" from ttalks t where t.date_connect between to_date('01.3.2005', 'dd.mm.yyyy') and to_date('31.03.2005 23:59:59', 'dd.mm.yyyy hh24:mi:ss') group by to_char(t.date_connect, 'mm.yyyy') Результат выполнения запроса 1 строка с данными за 1 месяц (что-то типа такого): 03.2005 41714548 1636542.161 2.353915705 Время выполнения - 94,7 с. Вы видимо сделали группировку за месяц. В первый раз я имел ввиду запрос с группировками по дням select to_char(t.date_connect, 'dd.mm.yyyy') as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", avg(t.lentalk) / 60 as "Ср. время разговора в минутах" from ttalks t where t.date_connect between to_date('01.3.2005', 'dd.mm.yyyy') and to_date('31.03.2005 23:59:59', 'dd.mm.yyyy hh24:mi:ss') group by to_char(t.date_connect, 'dd.mm.yyyy') В результате возвращается выборка из 31 записа с результатами на каждый день. Что-то типа этого: 01.03.0005 1460834 57702.9437222222 2.37550710512518 02.03.0005 1662122 65709.9997222222 2.37272681051328 ...... 22.03.0005 1373366 51959.0136666666 2.27656501779704 ........ Я тут немного поэксперементировал и получил время работы запроса 105 с. Чтоб не говорили что увидев ваш результат я быстро подделал свой привожу пример того запроса который работает примерно 200 - 230 с. select to_date(t.date_connect, 'dd.mm.yyyy') as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", avg(t.lentalk) / 60 as "Ср. время разговора в минутах" from ttalks t where t.date_connect between to_date('01.3.2005', 'dd.mm.yyyy') and to_date('31.03.2005 23:59:59', 'dd.mm.yyyy hh24:mi:ss') group by to_date(t.date_connect, 'dd.mm.yyyy') Так что при условии оптимизации запросов я получил результат не хуже вашего на гораздо больших объемах и большей нагрузке на систему. Отсюда можно сделать вывод что никакого существенного выигрыша (в 5 раз как заявляют представители interSystems например) М системы по сравнению с РСУБД не дают (по крайней мере в данном тесте). Переведи поля даты к типу datetime bповтори запрос. Я уверен что у тебя и база будет меньше занимать места и выигрыш в скорости запроса будет больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 08:34 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Iura Переведи поля даты к типу datetime bповтори запрос. Я уверен что у тебя и база будет меньше занимать места и выигрыш в скорости запроса будет больше select trunc(t.date_connect) as "Дата", count(1) as "Кол-во записей", sum(t.lentalk) / 3600 as "Продолжительность разговора", avg(t.lentalk) / 60 as "Ср. время разговора в минутах" from talks.ttalks_local_2005 t where t.date_connect between to_date('01.3.2005', 'dd.mm.yyyy') and to_date('31.03.2005 23:59:59', 'dd.mm.yyyy hh24:mi:ss') group by trunc(t.date_connect) при таком запросе стало 85 с. Я думаю если еще подумать то можно и до 60 с довести. Просто лень если честно. Если создать таблицу аналогичную той что использовал Sergei Obrastsov с 2 полями то время будет значительно менише 60 с. т.к. её объем будет меньше раз в 10 как минимум. Причет я использую запросы которые выполняет ядро базы. А он использует интерпритатор который гоняет цикл, что не сильно быстро как мы увидили. И все зяаявления Кашистов о беспрецедентной скорости работы рассыпались в прах. Я уж молчу о том как не удобно работать с их системой. Надо постояно продумывать структуру под запросы иначе только полный просмотр. А продумать все запросы которые понадобятся пользователям невозможно. Мне же достаточно добавить индекс и впринципе все работает. Пусть даже чуть чуть медленнее (превосходства в 5 раз никто не заметил). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 09:14 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Joker_Ya Sergei Obrastsov хорошо, привожу результаты тестирования. ..... оборудование и софт: AMD 2500+ (1.8Ghz)/1Gb, IDE HDD 120Gb 7200, Windows 2k Professional SP3, Cache 5.0.11 приоритеты задач и "разгрузка" компьютера: нет. тестирование проходило при обычной загрузке: IE, winamp и прочая лабуда вроде AVP, Far и ICQ. ..... Вот хоть что-то конкретное. Даже на таком сильно урезаном тесте в однопользовательском варианте (у меня на сервере еще более сотни человек работало выполняло запросы и вставку данных) производительность у вас всего примерно в 2 раза выше. Где декларируемая в Каше производительность в 5 раз выше чем у реляционных БД? .... Отсюда можно сделать вывод что никакого существенного выигрыша (в 5 раз как заявляют представители interSystems например) М системы по сравнению с РСУБД не дают (по крайней мере в данном тесте). Не могли бы Вы привести конфигурацию оборудования, на котором производилось тестирование ? В примере, который привел Сергей, она присутствует. Мне кажется, выводы можно начать делать, когда мы ее сравним с Вашей. А пока они преждевременны :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:07 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov pgresзаинтриговал сам вывод, противоречащий законам физики > время, затраченное на выборку данных не зависит от количества записей в БД, а зависит от размера данного/записи. прокомментируйте плз а ведь все банально просто - структура индексирована, следовательно поиска дат по всей таблице не происходит, во время выборки снимаются нужные значения сразу "под" нужной датой. и причем тут физика? а вот "размер данного" - это да, система дольше читает. С уважением. Сергей я не совсем правильно понял думал что время вычисления за день не зависит от количества записей за день ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:17 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
LittleCat Не могли бы Вы привести конфигурацию оборудования, на котором производилось тестирование ? В примере, который привел Сергей, она присутствует. Мне кажется, выводы можно начать делать, когда мы ее сравним с Вашей. А пока они преждевременны :-) Пожалуйста. 4 Xeon MP 1.9 Ггц дисковая стойка HP EVA 4000 на 4 Tb доступно 2,5 так как остальное забирается под их хитрый райд массив и горячую подмену (Объемы очень большие так ак надо хранить все данные минимум за 3 года). Память 4 Гб. На этом железе работает примерно 100 чел. В пики до 160. Выполняется куча аналитической отчетности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:22 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Joker_Ya LittleCat Не могли бы Вы привести конфигурацию оборудования, на котором производилось тестирование ? В примере, который привел Сергей, она присутствует. Мне кажется, выводы можно начать делать, когда мы ее сравним с Вашей. А пока они преждевременны :-) Пожалуйста. 4 Xeon MP 1.9 Ггц дисковая стойка HP EVA 4000 на 4 Tb доступно 2,5 так как остальное забирается под их хитрый райд массив и горячую подмену (Объемы очень большие так ак надо хранить все данные минимум за 3 года). Память 4 Гб. На этом железе работает примерно 100 чел. В пики до 160. Выполняется куча аналитической отчетности. Забыл БД Oracle 10.1.0.5 работает в режите Archivelog, так же включена опция flashback что не очень помогает быстродействию так как пишется куча журналов. Объем журналов за 1 день составляет 19-28 Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:36 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Код: plaintext 1. Что сравнивается в таких разных условиях, не понял. Хотя интересно было-бы узнать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:39 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
iscrafm Код: plaintext 1. Код: plaintext 1. Что сравнивается в таких разных условиях, не понял. Хотя интересно было-бы узнать. Ну так и нагрузка разная слегка не заметили. Там 1 чел. сидит а у меня 100. У него при более выгодных условиях (с базой работает 1 чел. Практически больша никаких задач не выполняется, объем значительно меньше и т д.) скорость работы не сильно выше. Это говорит о многом в том числе о том что при многопользовательской работе и на реальных данных все работать будет гораздо медленнее. Конечно усиление железа немного спасет ситуацию но вы никогда не получите 3-5 кратного превосходства над тем же Ораклом. В общем то я хотел показать имено это. Так что не поддавайтесь на рекламу о чудо постреляционных СУБД придуманных в 60-70 гг. прошлого века. И еще сравните код на SQL и на М. Интересно в каком коде быстрее разберется человек. Если на SQL надо написать 1 команду то на М надо целую программу. Достаточно приличного объема. Я конечно понимаю что поклонники М хитрят и не пишут операторы полностью чтоб хоть как то визуально приблизить свое творение к размерам SQL запроса. Пусть это будет на их совести. Кстати SQL можно вообще не писать есть куча графических построителей запросов. Ну это к слову. Не хочу обидеть стороников М систем. Просто мне надоело что постояно говорят о том что М может сделать любую РСУБД в несколько раз. А как доходит до реальных примеров ничего доказать не могут. Причем этим страдают не только программисты но и сама Intersystems. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:54 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Нагрузку как определили? Следили за загрузкой процессора что-ли. На минутных загрузках как поняли, что не Вы один, а 100 чел в эту минуту делили железо. Конечно никак. Хотя действительно в адекватных условиях тест был бы интересен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:31 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Joker_YaИ еще сравните код на SQL и на М. Интересно в каком коде быстрее разберется человек. Насчет кода конечно Вы правы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:33 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
iscrafmНагрузку как определили? Следили за загрузкой процессора что-ли. На минутных загрузках как поняли, что не Вы один, а 100 чел в эту минуту делили железо. Конечно никак. Хотя действительно в адекватных условиях тест был бы интересен. не был бы. обратите внимание, что идет последовательный перебор. С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:34 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov обратите внимание, что идет последовательный перебор. А не могли бы Вы попробовать выполнить во эту программку? автор ; Формирование теcтового массива k ^Table k ^SPhoneIndex k ^DateTimeIndex s StartDate=+$h ; массив будет формироваться начиная с сегодняшнего дня w !,"формируем массив" w !,"Начало формирования - ",$ZDT($h)," " f i=1:1:10000000 d ; количество (нужно менять при испытании) .s DeltaDate=$r(365) ; случайный день .s date=StartDate+DeltaDate ; дата разговора для тестирования .s time=$r(86400) ; случайное время для даты разговора .s DateTime=+(date_"."_time) ; в таком формате будем хранить дату и время .s SPhone=+$r(9999999) ; случайный номер телефона-источнка .s RPhone=+$r(9999999) ; случайный номер телефона-приёмника .s Length=$r(3600) ; случайная продолжительность разговора .s Сortege=$LB(DateTime,Phone,Length,RPhone) ; кортеж данных .s ^Table(i)=Сortege ; массив данных .s ^SPhoneIndex(SPhone,DateTime)=i ; Индекс по номеру телефона-источника .s ^DateTimeIndex(DateTime,SPhone)=i ; Индекс по дате .i i#100000=0 w !,i," ",$ZT($p($h,",",2)) w !,"Конец формирования - ",$ZDT($h)," ",!! ; Выборки ;---------- w !,"проход по всему массиву и подсчет количества записей" s i="" s count=0 w !,"Начало - ",$ZDT($h)," " f s i=$O(^Table(i)) q:i="" s count=count+1 w "Конец - ",$ZDT($h)," ",! w " количество = ",count,!! Мне интересно время выплнения на вашем компьютере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 12:14 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
yww@escape.ru Sergei Obrastsov Если возьмётесь, исправьте одну строчку.. ошибся я.. нужно так автор .s Сortege=$LB(DateTime,SPhone,Length,RPhone) ; кортеж данных Если не возьмётесь - я не обижусь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 12:17 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov iscrafmНагрузку как определили? Следили за загрузкой процессора что-ли. На минутных загрузках как поняли, что не Вы один, а 100 чел в эту минуту делили железо. Конечно никак. Хотя действительно в адекватных условиях тест был бы интересен. не был бы. обратите внимание, что идет последовательный перебор. С уважением. Сергей а что Вы предлагаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 12:40 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
pgres а что Вы предлагаете Выслать тест на TPC и попросить их прокомментировать или хотя бы посмотреть на их реакцию. Что же еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 13:12 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
пожалуйста вполне адекватные условия Win XP SP2 P4 3GHz 512 Mb RAM 80 Gb HDD SATA Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. количество записей за месяц ~43млн по дням распределены неравномерно в таблице немного больше но при существовании индекса это неважно размер базы 1.7Гб не самый лучший запрос Код: plaintext 1. 2. 3. 4. 120 сек не вижу обещаного превосходства каше в 5 раз (ну или хотя бы в 2) -- Кто - еще до сражения - побеждает предварительным расчетом , у того шансов много (Сунь Цзы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 17:54 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
pgresпожалуйста вполне адекватные условия Win XP SP2 P4 3GHz 512 Mb RAM 80 Gb HDD SATA действительно, просто одно и то же, подумаешь на 1Ghz больше Код: plaintext 1. 2. 3. 4. может кто-нибудь все-таки проверит сколько времени займет Код: plaintext 1. не вижу обещаного превосходства каше в 5 раз (ну или хотя бы в 2) в 2 и есть. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 01:06 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
iscrafmНагрузку как определили? Следили за загрузкой процессора что-ли. На минутных загрузках как поняли, что не Вы один, а 100 чел в эту минуту делили железо. Конечно никак. Хотя действительно в адекватных условиях тест был бы интересен. За процессорами не следил в этот раз но до этого специально мониторил систему. Загрузка в рабочее время в среднем составляет 30-40%. К сведению для вас 100 подключений даже неактивных требуют довольно боольших ресурсов системы сами по себе. Это прежде всего память (около 1 М если ничего не делали на процесс, у меня в среднем 2-5). Это время процессора так как постояно проверяется активно ли соеденение. Вообще внутри системы происходит значительное кол-во телодвижений для поддержания пула соеденений, для обеспечения целостности транзакций как читающих так и пишущих. Кстати у меня запрос был в рамках 1 транзакции, т. е. все данные были полученвы на момент начала транзакции. В приведенном тесте на М о транзакциях не слова и если данные необходимые для выборки были изменены после начала обработки то уже измененные данные попадут у них в выборку. Я же получу те данные которые были на момент начала транзакции даже если после начала выполнения запроса кто либо изменил данные. Поддержка транзакция весьма ресурсоемкая вещ. Так что тест в принципе показал что никакого особого приемущества М системы не дают. Железо у них было послабее. Так и работала в однопользовательском режиме без поддержки транзакций на сильно урезанных данных (у меня кол-во записей в таблице порядка 500 млн. у них всего 261 кроме того у меня длина записи почти в 15 раз больше). И при всех этих условиях скорость выполнения у них всего в 1.5 - 2 раза выше. Если добавить в их тест еще пару работающих человек, уравнять структуры хранения добавить транзакции то результат будет не сильно лучше. Тут Сергей постояно говорит: обратите внимание, что идет последовательный перебор И что это проблемы Каше и других М систем. Сделайте аналогичный SQL запрос если вам перебор не нравиться. Я думаю там вообще результат будет хуже раза в 2. В одном из топиков кто-то делал сравнение SQL в Оракле и Каше. Результат был не в пользу Каше раза в 1.5. Еще раз повторюсь я не против Каше. Просто при практически одинаковой стоимости лицензий на Каше и Оракл вы получите конструктор сделай сам все на языке похожем на курсовую работу студента филолагического факультета (так как с математикой очень плохо у них было приоретета операций нет) с криво пределаным SQL производительность которого не блещет а синтаксис застыл на уровне 90 годов, с жесткими ограничениями на кол-во подключений (у оракла нет никаких ограничений. Только совесть клиента и если например в какой то момент ононеожидано превысит кол-во лицензий купленных то ничего страшного все будет работать дальше. А вы можете спокойно докупить лицензии), с практически полным отсутствием литературы на русском, с отсутствием нормальной бесплатной версии (практически у всех РСУБД они есть с определенными ограничениями, по объему и количеству процессоров которые позволяют спокойно работать). Есть еще много минусов. Плюсов я например от приверженцев Каше так и не дождался. Одни обещают беспрецидентной производительности раз в 5 больше чем у РСУБД но этого нет как мы видим на реальных тестах. Другие говорят об удобстве хранения данных в деревьях, но его тоже нет так как под очередной запрос надо структуру данных подгонять. В общем сплошной гемморой за нехилые бабки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 02:47 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
yww@escape.ru c127А для выборки по неделям они будут лежать в узлах по этим самым неделям (а в месяце не целое число недель) Что ж вы так горячитесь? Не помещайте данные по месяцам в узлы - поместите их в узлы по дате.. все вопросы с неделями снимутся... как и, впрочем, с часами и минутами.. $h - хранит и дату и время одновременно. А я ничего никуда не помещаю, это Вы их туда помещаете: " в Каше не нужно выбирать данные за месяц.. они уже будут лежать в узле, относящемся к этому самому месяцу ." /topic/293038&pg=6#2684408 yww@escape.ruЧто касается других выборок - постройте для них подходящие индексы. Ну да, как же, только что нам втюхивали что индексы могут не потребоваться: " если вы уже на этапе постановки задачи знаете что вам портебуются выборки по датам, то и данные можно хранить в узлах, организованных на $h... а здесь уже всё равно - по месяцу, по неделе, по году - принцип то один и тот же.. становитесь на начало периода и двигаетесь до конца.. дополнительные индексы здесь могут и не понадобиться . ИМХО, конечно.." /topic/293038&pg=8#2687245 Я же об этом и говорю, что стоит немного поменять постановку задачи, а это по-моему происходит всегда, все достоинства КЕШ-а пропадают, остаются давно всем хорошо известные недостатки иерархических БД. yww@escape.ru И не думайте, пожалуйста, что лично вас кто то пытается обмануть Расслабтесь, я так не думаю. Но даже если и пытаются, это меня не беспокоит, не должно беспокоить и Вас. Хотя имете право беспокоиться разумеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 03:31 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33743453&tid=1553584]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 175ms |
| total: | 349ms |

| 0 / 0 |
