Размер виртуальной машины: рекомендации по оптимизации производительности SQL Server на виртуальных машинах Azure
Область применения:SQL Server на виртуальной машине Azure
В этой статье представлены рекомендации по размеру виртуальных машин и лучшие методы по оптимизации производительности SQL Server на виртуальных машинах Azure.
Обычно существует компромисс между оптимизацией затрат и оптимизацией производительности. Эта серия рекомендаций по повышению производительности предназначена для достижения оптимальной производительности SQL Server на виртуальных машинах Azure. Если рабочая нагрузка не так велика, могут потребоваться не все рекомендуемые варианты оптимизации. При оценке этих рекомендаций учитывайте актуальные потребности в производительности, затраты и характер рабочих нагрузок.
Подробные сведения см. в других статьях этой серии: Краткий контрольный список, Хранилище, Безопасность, Конфигурация HADR, Сбор базовых показателей.
Контрольный список
Ознакомьтесь со следующим контрольным списком, содержащим краткий обзор рекомендаций по размеру виртуальных машин, которые более подробно описываются далее в этой статье.
- Определите характеристики производительности рабочей нагрузки, чтобы определить соответствующий размер виртуальной машины для вашего бизнеса.
- При миграции в Azure используйте такие средства, как Помощник по миграции данных и рекомендации SKU, чтобы найти нужный размер виртуальной машины для существующей рабочей нагрузки SQL Server, а затем выполнить миграцию с помощью Azure Data Studio.
- Используйте образы Azure Marketplace для развертывания виртуальных машин SQL Server, так как параметры SQL Server и параметры хранилища настроены для оптимальной производительности.
- Используйте размеры виртуальных машин с 4 или более виртуальными процессорами.
- Используйте размеры виртуальных машин, оптимизированные для операций в памяти, для повышения производительности при выполнении рабочих нагрузок SQL Server.
- Серия Edsv5 и Msv3 и Mdsv3 предлагают оптимальное соотношение памяти к виртуальным ядрам, рекомендуемое для рабочих нагрузок OLTP.
- Виртуальные машины серии Mbdsv3 обеспечивают лучшую производительность для рабочих нагрузок SQL Server на виртуальных машинах Azure. Рассмотрите эту серию для критически важных рабочих нагрузок OLTP и хранилищ данных на базе SQL Server.
- Серия Ebdsv5 обеспечивает высокую пропускную способность ввода-вывода к виртуальным ядрам, а также соотношение памяти к виртуальным ядрам 8:1. Эта серия предлагает наилучшее соотношение цены и качества для рабочих нагрузок SQL Server на виртуальных машинах Azure. Сначала рассмотрите эти виртуальные машины для большинства рабочих нагрузок SQL Server.
- Семейство серии M предлагает виртуальные машины с наибольшим выделением памяти в Azure.
- Виртуальные машины серии Mbsv3 и Mbdsv3 обеспечивают большое распределение памяти и максимальное соотношение пропускной способности ввода-вывода к виртуальным ядрам среди семейства серии M, а также согласованное соотношение памяти и виртуальных ядер по крайней мере 8:1.
- Запустите среды разработки с серий начального уровня, таких как D, B или Av2, и постепенно развивайте свою среду.
- Проверьте поддержку ВМ , чтобы избежать неподдерживаемых конфигураций.
Чтобы сравнить контрольный список размеров ВМ с другими, просмотрите исчерпывающий контрольный список рекомендаций по оптимизации производительности.
Обзор
При создании SQL Server на виртуальной машине Azure тщательно рассмотрите необходимый тип рабочей нагрузки. Если вы переносите существующую среду, соберите базовые показатели производительности, чтобы определить требования SQL Server к виртуальной машине Azure. Используйте конфигурацию виртуальных ЦП и памяти исходного компьютера в качестве основы для миграции текущей локальной базы данных SQL Server в SQL Server на виртуальных машинах Azure. Если у вас есть Software Assurance, воспользуйтесь преимуществами Преимущество гибридного использования Azure, чтобы перенести лицензии в Azure и сэкономить на затратах на лицензирование SQL Server.
Если это новая виртуальная машина, создайте новую виртуальную машину SQL Server на основе требований приложения. Если вы создаете новую виртуальную машину SQL Server для нового приложения, созданного для облака, вы можете легко масштабировать виртуальную машину SQL Server по мере развития требований к данным и использованию. Запустите среды разработки с серий начального уровня, таких как D, B или Av2, и постепенно развивайте свою среду.
Рассмотрим следующие серии виртуальных машин на основе рабочих нагрузок SQL Server:
- Максимальное выделение памяти для критически важных рабочих нагрузок: виртуальные машины серии Mbsv3 и Mbdsv3 обеспечивают максимальное распределение памяти в Azure с оптимальной производительностью хранилища.
- Высокий коэффициент пропускной способности ввода-вывода к виртуальным ядрам: виртуальные машины серии Mbsv3 и Mbdsv3 обеспечивают максимальное соотношение пропускной способности к виртуальным ядрам любого ряда виртуальных машин в любом облаке. Виртуальные машины (ВМ) серии Ebdsv5 обеспечивают второе по величине соотношение пропускной способности к виртуальным ядрам в Azure. Если вы не знаете требования ввода-вывода для рабочей нагрузки SQL Server, виртуальные машины серии Ebdsv5 являются наиболее вероятными для удовлетворения ваших потребностей. Дополнительные сведения см. в статье о хранилище.
- Параллельная обработка для больших компьютеров: виртуальные машины серии Msv3 и Mdsv3 предлагают параллельную обработку, что делает их хорошими вариантами для более крупных сред хранилища данных.
Хранилище данных SQL Server и критически важные среды часто требуют масштабирования за пределами соотношения памяти к виртуальным ядрам 8:1. Для средних сред может потребоваться выбрать соотношение памяти к vCore на 16:1, а для больших сред хранилища данных — соотношение памяти к vCore на 32:1.
Используйте образы VM Marketplace для SQL Server с конфигурацией хранилища в портале. Это упрощает правильное создание пулов хранения, необходимых для получения размера, операций ввода-вывода в секунду и пропускной способности, нужных для ваших рабочих нагрузок. Важно выбрать виртуальные машины SQL Server, поддерживающие производительность хранилища класса Premium. Дополнительные сведения см. в статье о хранилище.
Внимание
SQL Server на образах виртуальных машин Azure не поддерживается размерами виртуальных машин, которые развертываются с неинициализированным эфемерным диском. Дополнительные сведения см. в статье Некоторые образы SQL Server на виртуальных машинах Azure не удается развернуть.
Оптимизированные для памяти виртуальные машины серии M
Серия M предлагает количество виртуальных ядер и объем памяти для самых больших рабочих нагрузок SQL Server.
Ниже перечислены возможности виртуальных машин серии M.
- Поддержка хранилища класса Premium, кэширования хранилища класса Premium, дисков категории "Ультра", ускорения записи и ускорения сети.
- Подходят для рабочих нагрузок SQL Server, требующих высоких вычислительных возможностей с большим объемом памяти и меньшим акцентом на производительность хранилища.
Серия Mbsv3 и Mbdsv3
Серия Mbsv3 и Mbdsv3 — это оптимизированные для памяти виртуальные машины, предназначенные для больших баз данных и рабочих нагрузок с высоким соотношением памяти к ЦП. Виртуальные машины в этой серии основаны на 4-м поколении Intel® Xeon® Scalable и предлагают диапазон размеров памяти и виртуальных ЦП для удовлетворения потребностей рабочих нагрузок SQL Server. Виртуальные машины серии Mbsv3 и Mbdsv3 рекомендуются для критически важных рабочих нагрузок, включая задачи хранилищ данных и других критически важных задач.
Виртуальные машины серии Mbsv3 и Mbdsv3 поддерживают большие базы данных и рабочие нагрузки с высоким соотношением памяти к ЦП, идеально подходят для реляционных серверов баз данных, хранения данных, тяжелых отчетов, больших кэшей и аналитики в памяти.
Ниже приведены характеристики виртуальных машин в этой серии:
- Серия Mbsv3 предлагает до 176 виртуальных ядер и 1536 ГиБ памяти с согласованным соотношением памяти к виртуальным ядрам 8:1, 650 000 операций ввода-вывода в секунду и 6000 МБИТ/с пропускной способности хранилища.
- Серия Mbdsv3 предлагает до 176 виртуальных ядер и 4 ТиБ памяти, 650 000 операций ввода-вывода в секунду и 10 000 МБИТ/с пропускной способности хранилища. Эта серия виртуальных машин обеспечивает более чем 50% повышение производительности в IOPS и пропускной способности по сравнению с высокопроизводительной серией Ebdsv5, что делает Mbdsv3 одной из самых высокопроизводительных виртуальных машин, доступных в любой облачной среде. Серия виртуальных машин Mbdsv3 использует аналогичные характеристики производительности с серией виртуальных машин Mbsv3, но включает в себя строгое локальное и эфемерное хранилище, что делает его идеальным для оптимизации производительности tempdb, отчетов, критически важных рабочих нагрузок OLAP и хранения данных.
Серия Msv3 и Mdsv3
Виртуальные машины Msv3 и Mdsv3 предназначены с вычислительными возможностями и памятью на среднем, высоком и очень высоком уровне памяти. Эти виртуальные машины обеспечивают улучшенную производительность, масштабируемость и устойчивость к сбоям по сравнению с предыдущим поколением виртуальных машин Mv2.
Ниже перечислены виртуальные машины в этой серии:
- Виртуальные машины средней памяти Msv3 и Mdsv3: на базе процессоров Intel® Xeon® Scalable 4-го поколения и предоставляют размеры виртуальных машин размером до 4 ТиБ памяти, 416 виртуальных ЦП, 130 000 операций ввода-вывода в секунду и 4000 МБИТ/с пропускной способности удаленного хранилища с интерфейсом NVMe.
- Виртуальные машины с высокой памятью Msv3 и Mdsv3: предназначены для рабочих нагрузок с высокой памятью с объемом памяти от 6 ТиБ до 16 ТиБ, до 832 виртуальных ЦП, до 260 000 операций ввода-вывода в секунду и пропускной способности 8 000 МБИТ/с до удаленного хранилища с интерфейсом NVMe.
- Серия mdsv3 с очень большим объемом памяти: на базе процессоров Intel® Xeon® Platinum 8490H (Sapphire Rapids) и имеет наибольший объем памяти среди виртуальных машин серии M, предлагая до 32 ТиБ памяти, 1792 виртуальных процессора (vCPU), до 200 000 операций ввода-вывода в секунду и 8 000 МБ/с пропускной способности удаленного хранилища.
Внимание
Отключите SMT для использования SQL Server на виртуальных машинах Azure, превышающих 64 виртуальных ядер на узел NUMA.
Виртуальные машины серии E, оптимизированные для памяти
Виртуальные машины серии E предназначены для рабочих нагрузок с большим объемом памяти, таких как большие базы данных, аналитика больших данных и корпоративные приложения, требующие значительных объемов ОЗУ для обеспечения высокой производительности.
Серия Ebdsv5
Серия Ebdsv5 — это оптимизированная для памяти серия виртуальных машин, которая обеспечивает максимальную пропускную способность удаленного хранилища, доступную в Azure. Эти виртуальные машины имеют соотношение памяти к виртуальным ядрам 8:1, что вместе с высокой пропускной способностью ввода-вывода делает их идеальными для большинства рабочих нагрузок SQL Server. Виртуальные машины серии Ebdsv5 предлагают лучшее соотношение цены и качества для рабочих нагрузок SQL Server, выполняемых на виртуальных машинах Azure. Мы настоятельно рекомендуем использовать эти виртуальные машины для большинства производственных рабочих нагрузок SQL Server.
Примечание.
Более крупные размеры серии Ebdsv5 (48 виртуальных ЦП и более крупные) обеспечивают поддержку доступа к хранилищу с поддержкой NVMe. Чтобы воспользоваться этой высокой производительностью ввода-вывода, необходимо развернуть виртуальную машину с помощью NVMe.
Серия Edsv5
Серия Edsv5 предназначена для приложений с большим объемом памяти и идеально подходит для рабочих нагрузок SQL Server, которые не требуют максимально высокой пропускной способности ввода-вывода, так как серия Ebdsv5 предлагает. Эти виртуальные машины имеют большой объем локального хранилища SSD, до 672 ГиБ ОЗУ, и очень высокую пропускную способность локального и удаленного хранилища. Для большинства этих виртуальных машин выделено почти постоянные 8 ГиБ памяти на vCore, что идеально подходит для большинства рабочих нагрузок SQL Server.
Самая большая виртуальная машина в этой группе — Standard_E104ids_v5 со 104 виртуальными ядрами и 672 ГиБ памяти. Эта виртуальная машина является заметной, так как она изолирована , что означает, что она гарантированно является единственной виртуальной машиной, работающей на узле, и поэтому изолирована от других рабочих нагрузок клиентов. Ее соотношение памяти к виртуальным ядрам ниже рекомендуемого для SQL Server, поэтому этот вариант следует использовать, только если требуется изоляция.
Виртуальные машины серии Edsv5 поддерживают хранилище класса Premium и кэширование хранилища класса Premium.
Серия ECadsv5
Размеры виртуальных машин серии ECadsv5 — это конфиденциальные виртуальные машины Azure, оптимизированные для памяти, с временным диском. Просмотрите конфиденциальные виртуальные машины для получения сведений о преимуществах безопасности конфиденциальных виртуальных машин Azure.
Поскольку функции безопасности конфиденциальных виртуальных машин Azure могут привести к затратам на производительность, протестируйте рабочую нагрузку и выберите размер виртуальной машины, соответствующий вашим требованиям к производительности.
Общее назначение
Размеры виртуальных машин общего назначения предназначены для обеспечения сбалансированного соотношения памяти к виртуальным ядрам для небольших рабочих нагрузок начального уровня, таких как разработка и тестирование, веб-серверы и небольшие серверы баз данных.
Из-за меньшего соотношения памяти к виртуальным ядрам у виртуальных машин общего назначения важно тщательно отслеживать счётчики производительности памяти, чтобы убедиться, что SQL Server получает необходимую память для кэширования буферов. Дополнительные сведения см. в разделе Базовая производительность памяти.
Так как начальная рекомендация для рабочих нагрузок — это соотношение памяти к виртуальным ядрам 8, минимальная рекомендуемая конфигурация для виртуальной машины общего назначения под управлением SQL Server составляет 4 виртуальных ЦП и 32 ГиБ памяти.
Серия Ddsv5
Серия Ddsv5 предлагает сбалансированное сочетание количества виртуальных ЦП, объема памяти и временного диска, но с меньшим соотношением объема памяти к числу виртуальных ядер.
Виртуальные машины Ddsv5 имеют меньшую задержку и более быстрое локальное хранилище.
Такие машины идеально подходят для параллельных развертываний SQL и приложений, требующих быстрого доступа к временным хранилищам и реляционным базам данных отделов. Существует стандартное соотношение памяти к виртуальным ядрам 4:1 для всех виртуальных машин в этой серии.
По этой причине рекомендуется использовать D8ds_v5 в качестве начальной виртуальной машины в этой серии, которая имеет 8 виртуальных ядер и 32 ГиБ памяти. Самая мощная виртуальная машина — это D96ds_v5 с 96 виртуальными ядрами и 256 ГиБ памяти.
Виртуальные машины серии Ddsv5 поддерживают хранилище класса Premium и кэширование хранилища класса Premium.
Примечание.
Серия Ddsv5 не предлагает соотношение объема памяти и количества виртуальных ядер, равное 8, которое рекомендуется для рабочих нагрузок SQL Server. Таким образом, рассмотрите возможность использования этих виртуальных машин только для небольших приложений и рабочих нагрузок разработки.
Серия DCadsv5
Размеры виртуальных машин серии DCadsv5 — это конфиденциальные виртуальные машины Azure общего назначения с временным диском. Просмотрите конфиденциальные виртуальные машины для получения сведений о преимуществах безопасности конфиденциальных виртуальных машин Azure.
Поскольку функции безопасности конфиденциальных виртуальных машин Azure могут привести к затратам на производительность, протестировать рабочую нагрузку и выбрать размер виртуальной машины, соответствующий вашим требованиям к производительности.
серия B;
Размеры burstable B-series виртуальных машин идеально подходят для рабочих нагрузок, которые не требуют постоянной производительности, таких как прототипы и очень малые серверы для приложений и разработки.
Большинство размеров виртуальных машин серии B с изменяемой производительностью имеют соотношение памяти к виртуальным ядрам, равное 4. Крупнейшая серия B с возможностью увеличения — это Standard_B20ms с 20 виртуальными процессорами и 80 ГиБ памяти.
Эта серия уникальна, поскольку приложения имеют возможность всплеска активности в рабочее время с баллами для всплесков, варьирующимися в зависимости от размера машины.
Когда кредиты исчерпаны, виртуальная машина возвращается к базовой производительности машины.
Преимущество серии B — это экономия вычислительных ресурсов, которую можно достичь по сравнению с другими размерами виртуальных машин других серий, особенно если вам требуется время от времени использовать вычислительную мощность в течение дня.
Эта серия поддерживает хранилище класса "Премиум", но не поддерживаеткэширование хранилища класса "Премиум".
Примечание.
Машины серии B с возможностью увеличения нагрузки не имеют соотношения памяти к vCore, равного 8, рекомендованного для рабочих нагрузок SQL Server. Таким образом, следует рассмотреть возможность использования этих виртуальных машин только для небольших рабочих нагрузок — серверов приложений, веб-серверов и для разработки.
Серия Av2
Виртуальные машины серии Av2 лучше всего подходят для рабочих нагрузок начального уровня, например для разработки и тестирования, веб-серверов с небольшим трафиком, небольших и средних баз данных приложений, а также экспериментальных систем.
Только Standard_A2m_v2 (2 виртуальных ядра и 16 ГиБ памяти), Standard_A4m_v2 (4 виртуальных ядра и 32 ГиБ памяти), а также Standard_A8m_v2 (8 виртуальных ядер и 64 ГиБ памяти) имеют оптимальное соотношение объема памяти и количества виртуальных ядер (равное 8) среди этих трех основных типов виртуальных машин.
Эти виртуальные машины являются хорошим вариантом для небольших систем разработки и тестирования SQL Server.
8 виртуальных ядер Standard_A8m_v2 также может быть хорошим вариантом для небольших приложений и веб-серверов.
Примечание.
Серия Av2 не поддерживает хранилище класса "Премиум" и поэтому не рекомендуется для производственных рабочих нагрузок SQL Server даже с виртуальными машинами, имеющими соотношение памяти к виртуальным ядрам, равным 8.
Оптимизированные для задач хранения
Размеры виртуальных машин, оптимизированных для операций в хранилище, предназначены для конкретных вариантов использования. Эти виртуальные машины специально разработаны с оптимизированной пропускной способностью диска и операциями ввода-вывода.
Серия Lsv2
Серия Lsv2 обладает высокой пропускной способностью, низкой задержкой и локальным хранилищем NVMe. Виртуальные машины серии Lsv2 оптимизированы для использования локального диска на узле, подключенного непосредственно к виртуальной машине, а не дисков долговременного хранения данных.
Эти виртуальные машины являются надежными вариантами для работы с большими данными, хранилищ данных, отчетов и рабочих нагрузок ETL. Высокая пропускная способность и IOPS локального хранилища NVMe является хорошим вариантом использования для обработки файлов, которые будут загружаться в базу данных, и других сценариев, где данные могут быть воссозданы из исходной системы или других хранилищ, таких как хранилище BLOB-объектов Azure или Azure Data Lake. Виртуальные машины серии Lsv2 могут ускорять производительность диска и поддерживать пиковую скорость до 30 минут подряд.
Эти виртуальные машины имеют размеры от 8 до 80 виртуальных ЦП, с 8 ГиБ памяти на каждый виртуальный ЦП, и на каждые 8 виртуальных ЦП приходится 1,92 ТиБ NVMe SSD. Это означает для крупнейшей виртуальной машины этой серии, L80s_v2, существует 80 виртуальных ЦП и 640 БиБ памяти с 10x1,92 ТиБ хранилища NVMe. Соотношение памяти к виртуальным ядрам составляет 8 ГБ на одно виртуальное ядро во всех этих виртуальных машинах.
Хранилище NVMe является эфемерным, что означает, что данные на этих дисках будут потеряны при отмене выделения виртуальной машины или при перемещении на другой узел для восстановления обслуживания.
Серии Lsv2 и Ls поддерживают хранилище класса "Премиум", но не кэширование хранилища класса "Премиум". Создание локального кэша для увеличения IOPS не поддерживается.
Предупреждение
Хранение файлов данных во временном хранилище NVMe может привести к потере данных при освобождении виртуальной машины.
Ограниченные возможности виртуальных ядер
Высокая производительность рабочих нагрузок SQL Server часто требует больших объемов памяти, операций ввода-вывода и пропускной способности без увеличения количества виртуальных ядер.
Большинство рабочих нагрузок OLTP — это базы данных приложений, управляемые большим количеством небольших транзакций. При использовании рабочих нагрузок OLTP считывается или изменяется только небольшой объем данных, но объем транзакций, зависящий от количества пользователей, значительно выше. Важно иметь память SQL Server, доступную для кэширования планов, хранения недавно обращавшихся данных для повышения производительности и обеспечения быстрого чтения физических данных в память.
Этим средам OLTP требуется больший объем памяти, быстрое хранилище и пропускная способность ввода-вывода, необходимая для оптимального выполнения.
Чтобы обеспечить такой уровень производительности без повышения лицензионных расходов на SQL Server, Azure предлагает размеры виртуальных машин с ограниченным количеством виртуальных ЦП.
Это помогает управлять затратами на лицензирование за счет сокращения количества доступных виртуальных ядер при сохранении одинаковой памяти, хранилища и пропускной способности ввода-вывода родительской виртуальной машины.
Количество виртуальных ЦП можно ограничить вдвое или вчетверо от исходного размера виртуальной машины. Сокращение числа виртуальных ядер, доступных виртуальной машине, достигает более высоких коэффициентов памяти к виртуальным ядрам, но затраты на вычислительные ресурсы останутся прежними.
В названии новых размеров виртуальных машин содержится суффикс, указывающий количество активных виртуальных ЦП, что позволяет упростить процесс их определения.
Например, для M64-32ms требуется лицензирование 32 только виртуальных ядер SQL Server с памятью, вводом-выводом и пропускной способностью M64ms, а для M64-16ms — лицензирование только 16 виртуальных ядер. Хотя M64-16ms имеет четверть стоимости лицензирования SQL Server по сравнению с M64ms, вычислительные затраты на виртуальные машины одинаковы.
Примечание.
- При средних и больших рабочих нагрузках хранилищ данных могут все еще извлекать пользу из виртуальных машин с ограничением vCore, но рабочие нагрузки хранилища данных обычно характеризуются небольшим количеством пользователей и процессов, обращающихся к большим объемам данных с помощью параллельно выполняемых планов запросов.
- Стоимость вычислений, которая включает в себя лицензирование операционной системы, останется такой же, как и у родительской виртуальной машины.
Поддерживаемость
При установке SQL Server на виртуальные машины Azure следует учитывать следующие ограничения.
- масштабируемые наборы виртуальных машин Azure (VMSS) не поддерживаются для работы с SQL Server на виртуальных машинах Azure. Если вы решите использовать VMSS с SQL Server на виртуальной машине Azure вопреки этой рекомендации и включите функцию автоматического исправления гостевых систем, которая заменяет диск ОС при выпуске новой версии образа, вы, скорее всего, нарушите работу SQL Server, что может привести к потенциальному повреждению, потере данных и проблемам с доступностью.
- SQL Server не поддерживается в системах с более чем 64 виртуальными ядрами на узел NUMA. Отключите SMT для использования SQL Server на виртуальных машинах Azure, превышающих 64 виртуальных ядер на узел NUMA.
- В настоящее время SQL Server поддерживает диски со стандартными секторами размерами 512 байт и 4 КБ. Установка SQL Server на диски с размером сектора 8 КБ не поддерживается и может привести к сбоям установки, а также снижению производительности из-за невыравненного ввода-вывода.
- SQL Server на образах виртуальных машин на платформе Azure не удается развертывание с размерами виртуальных машин с неинициализированными эфемерными дисками. Дополнительные сведения см. в статье Некоторые образы SQL Server на виртуальных машинах Azure не удается развернуть.
Связанный контент
Дополнительные сведения см. в других статьях из этой серии материалов с рекомендациями:
- Краткий контрольный список
- Память
- Безопасность
- Параметры HADR
- Сбор базовых показателей
- Рекомендации по безопасности см. в разделе Вопросы безопасности SQL Server на виртуальных машинах Azure.
- Ознакомьтесь с другими статьями, посвященными виртуальным машинам SQL Server, в разделе Обзор SQL Server на виртуальных машинах Azure. Если у вас есть вопросы по виртуальным машинам SQL Server, см. раздел часто задаваемых вопросов.