Показать сообщение отдельно
Старый 16.01.2019, 19:01   #22  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,874 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от fed Посмотреть сообщение
Меня больше всего интересует - почему в tempDb такая небольшая разница между Azure SQL и локальным SQL. Такое ощущение что у них в Azure какой-то мегалоггинг, который огромное время занимает. По обычной БД он срабатывает, а по tempdb - нет.
Хотя с другой стороны и по select'ам из tempDB разница небольшая, что вообще необъяснимо в моих пределах понимания.
P.S. Ооо - прочитал идею Vadik насчет синхронного коммита в другой регион. Ну да - вариант интересный и задержки по записи в обычную БД легко объясняет. Но задержки по чтению - как-то не очень.

А там для tempDB вот такой код используется:
X++:
private container checkTempDBTemptable()
{
    PerformanceCheckTableTmp tmpCheckTable;
    PerformanceCheckTable    checkTable;
    int64   insertTime, queryTime;
    str     strDummy;
    System.Diagnostics.Stopwatch sw;
    ;

    if (!useTableCache)
    {
        tmpCheckTable.disableCache(true);
        checkTable.disableCache(true);
    }

    sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    ttsBegin;

    insert_recordset tmpCheckTable (IntFieldKey, IntField1, IntField2, StringField3, DateField1, DateTimeField2)
        select IntFieldKey, IntField1, IntField2, StringField3, DateField1, DateTimeField2
        from checkTable where  checkTable.IntField1 >= startCount && checkTable.IntField1 <= recordCount;

    ttsCommit;
    sw.Stop();
    insertTime = sw.get_ElapsedMilliseconds();

    sw.Reset();
    sw.Start();
    while select * from tmpCheckTable
    {
        strDummy = tmpCheckTable.StringField3;
    }

    sw.Stop();
    queryTime = sw.get_ElapsedMilliseconds();
    return [insertTime, queryTime];
}
где PerformanceCheckTableTmp - это InMemory талдычка (!).

Не означает ли это что реально данный тест меряет не скорость вставки в tempDB, а скорость начитки из БД и вставки в InMemory табличку (что при большом объеме превращается в запись на жесткий диск аоса).

Что же мы меряем этим тестом ? Скорость винчестера на аосе ?

Это похоже на правду, тем более что в большинстве измерений замеры
Цитата:
Tempdb Temp table Inserts : xxx1, Selects : xxx2
и
Цитата:
inMemory Temp table (AOS) Inserts : yyy1, Selects : yyy2
практически одинаковы. Если бы запись шла реально в tempDB то хоть где то должен был бы попасться замер с сильно отличающимися значениями.