Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Технологична йерархия на паметта/съхранението и SQL сървър

Има една стара мрежова поговорка, която гласи:„Проблемите с честотната лента могат да бъдат излекувани с пари. Проблемите със закъснението са по-трудни, защото скоростта на светлината е фиксирана."

Традиционно има четири основни слоя в цялостната йерархия на паметта и съхранението на сървър на база данни. Започвайки от върха на пирамидата, имате кеширане на статична памет с произволен достъп (SRAM), което обикновено е разделено между относително малки, бързи L1 и L2 кешове за всяко физическо ядро ​​на процесора и по-голямо, по-бавно, включено, споделен L3 кеш за целия процесор. Например, 14nm процесор Intel Xeon E7-8890 v4 (Broadwell-EX) има 64KB на ядро ​​L1 кеш и 256KB на ядро ​​L2 кеш, заедно с много по-голям, но по-бавен 60MB L3 кеш, който се споделя в целия физически процесор .

Вторият слой е динамична памет с произволен достъп (DRAM) с лицензен капацитет до 4TB с Windows Server 2012 R2, достигащ до 24TB с Windows Server 2016 и с латентности в наносекундния диапазон. И SRAM, и DRAM са непостоянни, което означава, че съхраняват данни само когато се прилага електрическо захранване.

Третият слой са SATA/SAS (NAND) SSD дискове, с индивидуален капацитет до около 4TB и латентности в микросекундния диапазон. Един ограничаващ фактор за по-старите SATA/SAS (NAND) SSD дискове е фактът, че те използват интерфейса SATA/SAS, който ограничава общата им честотна лента, в зависимост от версията SATA/SAS, която използват. Те също така са ограничени чрез използване на наследения протокол AHCI, който има много повече I/O надписи и по-висока латентност от по-новия NVMe протокол. Четвъртият слой са наследени твърди дискове с магнитни въртящи се носители с индивидуален капацитет до 10TB и латентности в милисекундния диапазон.

Всеки от тези традиционни слоеве има по-висока латентност, но по-ниска цена на MB/GB и по-висок общ капацитет, докато се движите надолу по йерархията памет/памет. Относителната латентност на тези четири традиционни слоя е показана в Таблица 1.

Интерфейс Тип Относително забавяне (четене)
На ядро/На кристален процесор SRAM кеш 1x
Директно прикачване DDR4 DRAM 10x
PCIe NVMe или SATA/SAS AHCI SSD 100 000x
SAS/SATA HDD 10 000 000x

Таблица 1:Традиционни слоеве памет/съхранение

Нови слоеве памет/памет

През последните няколко години видяхме въвеждането и нарастващото използване на NVM Express (NVMe) PCIe SSD, базирани на съществуваща NAND флаш технология. Те обикновено имат латентност в диапазона 50-100 микросекунди. Те също така използват по-новия, много по-ефективен NVMe протокол и интерфейса PCIe, което дава много по-добра производителност от по-старите SAS/SATA SSD, използващи стария протокол AHCI.

В момента Hewlett Packard Enterprise (HPE) продава 8GB NVDIMM модули за своите сървъри HPE Proliant DL360 Gen9 и сървъри HPE Proliant DL380 Gen9. Тези модули имат 8GB DRAM, която е подкрепена от 8GB флаш за $899,00, което е доста скъпо за гигабайт. Тези сървъри с два гнезда имат 24 слота за памет, всеки от които поддържа до 128 GB традиционни DDR4 DIMM. Всички слотове, които използвате за NVDIMM модули, няма да са налични за редовно използване на паметта. Можете да използвате максимум 16 слота за памет за използване на NVDIMM, което ви дава максимален капацитет от 128 GB. Трябва да използвате процесори от серия Intel Xeon E5-2600 v4, за да получите официална поддръжка на NVDIMM. Micron е планирано да пусне по-голям капацитет 16GB NVDIMM през октомври 2016 г.

Устройство IOPS Ср. забавяне (ns) MB/sec
NVM Express SSD 14 553 66 632 56,85
Block Mode NVDIMM 148 567 6418 580,34
DAX режим NVDIMM 1 112 007 828 4343,78

Таблица 2:4K Сравнение на производителността на произволно записване (1 нишка, QD1)

Данните за производителността в таблица 2 са от презентация на Microsoft/Intel (постоянна памет в Windows) на IDF16 в Сан Франциско, използвайки тази методология за тестване на производителността:

  • Работно натоварване :4KB произволни записи, 1 нишка, 1 изключителен I/O, синхронен I/O, 1GB файл, NTFS, 3s загряване, 7s време за измерване
  • Хардуер :HPE ProLiant DL380 Gen9, 2x Intel Xeon E5-2650L v3 @ 1.8GHz, 96GB RAM, 2x 8GB NVDIMM-N, 1x 1600GB NVMe SSD
  • Софтуер :Предварително издадена версия на WS 2016, вътрешен I/O инструмент на Microsoft

Има добър видеоклип на Channel 9, наречен Ускоряване на производителността на SQL Server 2016 с постоянна памет в Windows Server 2016, с участието на Линдзи Алън и Тобиас Клима. Демо във видеото показва как SQL Server 2016, работещ на Windows Server 2016, поддържа режим DAX (с неопределен флаг за проследяване). След като Windows Server 2016 стане GA, флагът за проследяване няма да е необходим с бъдеща версия на SQL Server.

Тези нови слоеве за съхранение на памет ще се поставят между традиционната DRAM памет и SATA/SAS SSD.

Обем за съхранение, форматиран в режим DAX, може да се използва за хостване на регистрационен файл на транзакциите на SQL Server 2016 в сценарий, в който се нуждаете от най-добрата възможна производителност на запис и не искате да използвате отложена издръжливост или OLTP в паметта. Друг възможен сценарий би бил използването на том в режим DAX за хостване на вашите tempdb файлове с данни, ако сте имали натовареност, която поставя изключителен стрес върху tempdb.

Бъдещи слоеве памет/съхранение

В края на 2016/началото на 2017 г. трябва да видим въвеждането на Intel Optane SSD, използващи протокола NVMe. Това ще бъдат флаш устройства за съхранение, които използват технологията Intel/Micron 3D XPoint (произнася се като кръстосана точка), които ще работят в съществуващи сървъри. При вътрешно тестване на Intel тези устройства показват около 10 пъти по-ниска латентност и около 10 пъти по-високи IOPS от съществуващите много високопроизводителни Intel DC P3700 серия PCIe NVMe SSD устройства.

В средата/края на 2017 г. трябва да видим и пускането на нова форма на постоянен DIMM, който може да се използва като постоянна памет с много голям капацитет или като изключително високопроизводително съхранение с малък капацитет. Те ще бъдат електрически и физически съвместими с настоящите DDR4 DIMM и ще се поддържат в следващото поколение базирана на процесор Intel Xeon платформа (платформата Skylake „Purley“). Тези продукти също ще бъдат базирани на технологията Intel/Micron 3D XPoint. Тези DIMM модули на Intel ще предлагат до два пъти по-голям капацитет на системната памет на значително по-ниска цена от традиционната DDR4 DRAM, ако приемем, че платформата ви процесор/сървър го поддържа (а Microsoft повишава лимита за лицензна памет след пускането на Windows Server 2016). Тези DIMM модули няма да имат същата латентност като традиционната DRAM (ще са по-бавни), но ще предлагат много по-ниска латентност от PCIe NVMe устройства за съхранение.

От по-широка гледна точка в цялата индустрия, тази нова категория устройства с постоянна памет (PM) ще предлага енергонезависимо съхранение с почти подобна на DRAM производителност. PM устройствата се намират директно на шината на паметта, което им дава много ниска латентност и висока честотна лента. Microsoft поддържа PM устройства в Windows 10 Anniversary Update и Windows Server 2016. Ще има поддръжка за нов клас обем за съхранение, който се нарича том за съхранение с директен достъп (DAX). DAX Volumes използват файлове, картографирани в паметта, за да осигурят на приложения директен достъп до PM устройства за абсолютно най-добра производителност.

Една от причините, поради които режимът DAX е толкова по-бърз, е, че след като сте картографирали региона на NVDIMM на DAX том, по-нататъшните взаимодействия с това хранилище напълно заобикалят стека за съхранение. Това е буквално просто мемкопие, за да има данните да бъдат постоянни. Това е много код, който не е нужно да изпълнявате при всяко взаимодействие със хранилището. Това е друг много важен фактор за латентността (заедно със скоростта на светлината). DAX томовете се поддържат в NTFS и трябва да изберете режим DAX, когато форматирате тома. Приложенията (като SQL Server 2016) трябва да са били модифицирани (от Microsoft), за да поддържат и използват режим DAX, а също така ще трябва да активирате флаг за проследяване.

За обратна съвместимост на PM хардуера ще има и томове в режим на блок, които поддържат цялата съществуваща семантика за съхранение. Всички I/O операции ще преминат през стека за съхранение до драйвера на PM диска. Това прави режимът на Блокиране напълно съвместим със съществуващите приложения. Ако имате PM хардуерно устройство с поддържана операционна система, ще получите значителна производителност на съхранение без каквато и да е промяна на приложението в режим на блок. Това означава, че версиите на SQL Server от по-ниско ниво ще могат да използват обеми за съхранение в режим на блок.

Изводът на всичко това е, че ще имаме много повече гъвкавост и нови опции за това как да проектираме и конфигурираме слоевете си памет и подсистема за съхранение през следващите 12-18 месеца, стига да използвате SQL Server 2016 на Windows Server 2016 и разполагат с достатъчно нов хардуер, който може да поддържа PM устройства. По-старите версии на SQL Server ще могат да използват PM томове в блоков режим, ако работят на Windows Server 2016. По-старият хардуер и по-старите версии на Windows Server ще могат да използват Intel Optane SSD дискове. Това ще ни даде много допълнителни възможности за подобряване на производителността на съхранение!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как sys.dm_exec_describe_first_result_set_for_object работи в SQL Server

  2. как да намерите размера на редовете в таблицата

  3. Как да намерите последния ден от месеца в SQL Server

  4. Как да изразите своята стойност като DBA пред финансовите ръководители

  5. Най-добрият начин за съхраняване на време (hh:mm) в база данни