Запитання з тегом «database-internals»

З технічних питань щодо внутрішньої роботи двигуна бази даних.

2
Чому таблиця темпів є більш ефективним рішенням проблеми на Хеллоуїн, ніж жадібна котушка?
Розглянемо наступний запит, який вставляє рядки з вихідної таблиці лише у тому випадку, якщо вони ще не є цільовою таблицею: INSERT INTO dbo.HALLOWEEN_IS_COMING_EARLY_THIS_YEAR WITH (TABLOCK) SELECT maybe_new_rows.ID FROM dbo.A_HEAP_OF_MOSTLY_NEW_ROWS maybe_new_rows WHERE NOT EXISTS ( SELECT 1 FROM dbo.HALLOWEEN_IS_COMING_EARLY_THIS_YEAR halloween WHERE maybe_new_rows.ID = halloween.ID ) OPTION (MAXDOP 1, QUERYTRACEON 7470); Одна …

4
Унікальність індексу
У мене в офісі тривають дискусії з різними розробниками про вартість індексу, і про те, чи є унікальність корисною чи дорогою (напевно, обидва). Суть проблеми - наші конкуруючі ресурси. Фон Раніше я читав дискусію, яка заявляє, що Uniqueіндекс не потребує додаткових витрат на підтримання, оскільки Insertоперація неявно перевіряє, куди він …

2
У пошуках FILESTREAM Insider інформації
Коли функція FILESTREAM активована на Microsoft SQL Server 2012, тоді SQL Server створить "приховану" спільну частину в системі. Частка визначається наступним чином: Sharename FILESTREAM_SHARE Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE Remark SQL Server FILESTREAM share Maximum users unlimited Users Caching Manual caching of documents Permissions NT-AUTHORITY\Authenticated Users, FULL Ім'я - це ім'я спільноти, яку …

2
Чому MySQL дозволяє HAVING використовувати псевдоніми SELECT?
Наскільки я знаю, у SQL порядок обробки логічного запиту, який є концептуальним порядком інтерпретації, починається з FROM таким чином: ВІД ДЕ ГРУПА ПО ВИДАЛЕНО ВИБІРИ СОРТУВАТИ ПО Після цього списку легко зрозуміти, чому ви не можете мати псевдоніми SELECT у пункті WHERE, оскільки псевдонім ще не створений. T-SQL (SQL Server) …

1
як імітувати стан низької пам’яті під час запуску запиту
Я намагаюся краще зрозуміти, як поводиться механізм виконання SQL Server у режимі з низькою пам’яттю. Якщо говорити про грамати пам'яті, мені цікаво, чи є якийсь спосіб змусити GrantedMemoryбути рівним RequiredMemory. (Я здогадуюсь, що там є недокументований прапор слідів, який це зробить. Хтось знає, що це?)

1
Що дозволяє SQL Server торгувати іменем об'єкта для рядка, переданого до системної процедури
Що обумовлює правомірність передавання імені об'єкта в систему, що зберігається sp_helptext? Який механізм перетворює ім'я об'єкта в рядок? напр -- works sp_helptext myproc sp_helptext [myproc] sp_helptext [dbo.myproc] -- and behaves the same as a string sp_helptext 'myproc' sp_helptext 'dbo.myproc' -- does not work sp_helptext dbo.myproc -- Msg 102, Level 15, …

2
Чим відрізняються ці два відкати SQL Server?
У SQL Server 2008 R2, чим вони відрізняються: Запустіть ALTERзаяву на кілька хвилин, а потім натисніть "Скасувати виконання". Для повного відкату потрібно кілька хвилин. Запустіть той самий ALTERоператор, але переконайтеся, що LDFфайл недостатньо великий для його успішного завершення. Після того, як LDFобмеження буде досягнуто і не дозволено «автоматичний ріст», виконання …

1
Масив слотів та загальний розмір сторінки
Я продовжую читати на багатьох форумах і в багатьох блогах, що сторінка складається, як показано нижче: Розмір сторінки: 16 x 512B = 8192B Заголовок сторінки: = 96B Максимальна кількість рядків: = 8060B Це залишає (8192 - 96 - 8060) B = 36B. Гаразд, це логічно і правильно. У мене таке …

1
Чому ці подібні запити використовують різні фази оптимізації (обробка транзакцій проти швидкого плану)?
Приклад коду в цьому елементі підключення Показує помилку де SELECT COUNT(*) FROM dbo.my_splitter_1('2') L1 INNER JOIN dbo.my_splitter_1('') L2 ON L1.csv_item = L2.csv_item Повертає правильні результати. Але наведені нижче результати повертають невірні результати (у 2014 році за допомогою нового Оцінювача кардинальності) SELECT (SELECT COUNT(*) FROM dbo.my_splitter_1('2') L1 INNER JOIN dbo.my_splitter_1('') L2 …

1
Чому цей агрегат потоків необхідний?
Перевірте цей запит. Це досить просто (див. У кінці публікації визначення таблиць та індексів та сценарій репро). SELECT MAX(Revision) FROM dbo.TheOneders WHERE Id = 1 AND 1 = (SELECT 1); Зауважте: "І 1 = (ВИБІР 1) - це просто уникнути автоматичного параметризації цього запиту, що, як мені здається, заплутало проблему …

1
Де SQL Server фізично зберігає значення Ідентичності для таблиці?
Я сподіваюся, що хтось може вказати на мене в потрібному напрямку. Ось мої розробки поки що. SELECT * FROM sys.identity_columnsце системний вигляд, який дає "last_value", але визначення для цього представлення використовує внутрішню функцію IdentityProperty(colName, 'LastValue')- тож це глухий кут (не витягуючи його з системної таблиці там). Скрізь (я подивився) в …

3
Фізична робота об'єднання: чи гарантує це порядок виконання?
У стандартних SQL результат a union allне гарантується в будь-якому порядку. Отже, щось на кшталт: select 'A' as c union all select 'B' Може повернути два рядки в будь-якому порядку (хоча, на практиці в будь-якій базі даних, про яку я знаю, "A" прийде перед "B"). У SQL Server це перетворюється …

1
Перерахуйте ROW_OVERFLOW_DATA сторінки для певної таблиці
Я намагаюся отримати список сторінок для таблиці, що має рядки з ROW_OVERFLOW_DATA. Я можу отримати список виділених сторінок із недокументованого DMV, sys.db_db_database_page_allocationsоднак, схоже, немає ROW_OVERFLOW_DATA сторінок, перелічених у висновку цього DMV. Чи є якісь інші DMV, які я просто не можу знайти? Мінімальний, повний та (сподіваємось!) Приклад, який можна перевірити: …

2
База даних для ефективних сукупних запитів діапазону?
Як спрощений приклад, припустимо, у мене є така таблиця: seq | value ----+------ 102 | 11954 211 | 43292 278 | 19222 499 | 3843 Таблиця може містити сотні мільйонів записів, і мені потрібно часто робити такі запити: SELECT sum(value) WHERE seq > $a and seq < $b Навіть якщо …

2
Чому вкладені петлі приєднуються лише до підтримуваних лівих з'єднань?
У блозі Крейга Фрідмана, Nested Loops Join , він пояснює, чому вкладені петлі з'єднання не можуть підтримувати правильне зовнішнє з'єднання: Проблема полягає в тому, що ми скануємо внутрішню таблицю кілька разів - один раз для кожного ряду зовнішнього з'єднання. Під час цих кількох сканувань ми можемо зустріти одні й ті …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.