Что лучше server или sql server
Реляционные СУБД – сравнение MySQL и SQL сервер
База данных играет важную роль для каждого современного веб-приложения. Благодаря динамической природе веб-приложений сейчас, даже простейшие приложения требуют некоторых механизмов хранения, доступа и изменения данных (вот почему в Hostinger мы предлагаем неограниченные базы данных MySQL для наших клиентов с премиум и бизнес аккаунтами). Естественно, поскольку важность баз данных стремительно растёт, реляционные системы управления базами данных или реляционные СУБД набирают свою популярность (Relational Database Management Systems – RDBMS)
Две из них MySQL и SQL Server. Обе выполняют одинаковую функцию, хотя имею различные варианты использования. Они различаются некоторыми особенностями, но обе системы базируются на SQL или Structured Query Language (структурированный язык запросов). В связи с этим, разработчики могут обнаружить несколько схожестей между MySQL и SQL сервер, таких как использование таблиц для сохранения данных, ссылки на первичные и внешние ключи, так же как несколько баз данных в одной среде или на одном сервере.
Не будет ошибкой сказать, что MySQL и SQL сервер – это две наиболее популярные реляционные СУБД среди существующих, хотя Oracle и Postgres найдётся, что сказать по этому поводу. Несмотря на то, что мы постепенно становимся свидетелями перехода с SQL на NoSQL, первые всё же продолжают доминировать. Это означает, что сейчас всё ещё актуально изучить как MySQL, так и SQL сервер.
В этом руководстве мы подробно разъясним, что такое MySQL и SQL сервер. Мы найдём различия между MySQL и SQL сервером и поможем вам выбрать наиболее подходящую для ваших потребностей.
MySQL и SQL сервер – сравнение
Что такое MySQL?
Разработанная в середине 90х (позже приобретённая Oracle), MySQL была одной из первый баз данных с открытым исходным кодом и остаётся таковой и до сегодня. Это значит, что существует несколько альтернатив MySQL. Но различия между этими вариантами не слишком явные; синтаксис и основная функциональность остаётся одинаковой.
А что является отличительной чертой MySQL, так это её популярность среди стартап-сообществ. Открытый код и бесплатность даёт возможность разработчикам легко начать с MySQL и изменять свой код, когда понадобится. MySQL обычно используется вместе с PHP (англ.) и сервером Apache, в дистрибутивах Linux, что и привело к известной аббревиатуре LAMP (Linux, Apache, MySQL, PHP).
Что такое SQL сервер?
SQL сервер также известен, как Microsoft SQL Сервер, появился значительно раньше, чем MySQL. Microsoft разработал SQL сервер в 80х, с обещанием разработать надёжную и расширяемую реляционную СУБД. Они остаются ядром качества SQL сервера по прошествии всех этих лет, и предоставляют незаменимое решение для крупномасштабного корпоративного программного обеспечения.
Ключевые различия между MySQL и SQL сервером
Теперь, после краткого знакомства с системами, давайте посмотрим на несколько ключевых различий между MySQL и SQL сервером:
MySQL
Microsoft SQL Server
Обе цепочки кода достигают одного и того же результата – возвращают 3 записи со значением самого молодого возраста из таблицы имён людей. Но синтаксис сильно отличается. Конечно, синтаксис – это субъективный параметр оценки, поэтому мы не может тут давать рекомендацию; выбирайте то, что кажется вам более интуитивно понятным. Полный список описательных различий между MySQL и SQL сервером можно найти здесь (англ.).
Заключение
Выбор реляционной СУБД является важным для тех, кто только начинает разработку приложения. Люди, которые выбрали одну систему, редко позже переключаются на другую, а это означает, что важно сразу взвесить разные предложения и выбрать лучшее для вас.
В этом руководстве мы обсудили две наиболее распространенные реляционные СУБД – MySQL и Microsoft SQL сервер. Мы рассмотрели несколько ключевых различий между MySQL и SQL сервером, даже одного из которых может быть достаточно, чтобы сделать выбор.
В конечном счёте, выбор за вами. Как правило, если вы разрабатываете приложения среднего и малого размера и преимущественно используете PHP, переходите к MySQL. Принимая во внимание, что если вы заинтересованы в создании крупномасштабных, безопасных, устойчивых корпоративных приложений, SQL сервер может вам подойти куда больше.
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.
Что такое MS SQL Server и чем она отличается от других СУБД
Веб-ресурсы содержат огромное количество данных – от учетных записей пользователей до контента, опубликованного на страницах. То же относится к «облачным» приложениям вроде CRM, программ для бухучета, складского учета и пр. Везде используется один способ хранения информации – база данных. И этой базой необходимо как-то управлять.
Сегодня мы поговорим об одной из самых популярных систем управления реляционными базами данных – MS SQL Server.
Что такое MS SQL Server
Чтобы упростить работу с такими хранилищами данных и повысить эффективность их применения, создаются специализированные системы управления. Одной из наиболее популярных является разработка от Microsoft – SQL Server. Первый релиз платформы опубликован еще в 1989 году, а последняя версия выпущена в 2019 году (проект продолжает развиваться).
Каждый выпуск включает в себя несколько специализированных редакций. Это снижает сложность внедрения и затраты на процесс разработки собственных решений, адаптированных для «узких» задач. При написании программного кода активно используется интеграция с продуктами Microsoft, например, с платформой Visual Studio.
Прямые конкуренты на рынке – Oracle Database, PostgreSQL. Первый проект коммерческий, он создан для поддержки крупных компаний, поэтому сопоставим по возможностям с MS SQL Server. Второй же распространяется на бесплатной основе и не «блещет» функциональностью, хотя весьма популярен среди многих разработчиков (аналог от Oracle MySQL).
Что такое СУБД
Появление таких продуктов позволило объединить разное понимание БД (баз данных) со стороны пользователей и системных администраторов. Неискушенные в технических деталях люди «видят» таблицы как некий перечень данных с колонками и строками. Системный подход включает файлы с табличными данными, связанными друг с другом согласно определенному алгоритму.
Функции базы данных:
Клиентами БД являются прикладные программы, их интерфейс, различные интерактивные модули сайтов вроде калькуляторов и онлайн-редакторов. Но есть еще один компонент системы – СУБД. Он предназначен для ручного доступа к информации и позволяет извлекать данные на диск, работать с ними в памяти сервера, в том числе с применением структурированного языка SQL.
Всего различают три типа БД – клиент-серверные, файл-серверные и встраиваемые. MS SQL Server относится к первой категории. Плюс система является реляционной, т.е. адаптированной для хранения данных без избыточности, с минимальными рисками появления аномалий и нарушения целостности внутренних таблиц.
Расширения языка SQL
Язык SQL представляет собой стандарт, унифицирующий обработку данных всеми реляционными базами данных. Такой подход упрощает перекрестные обращения, дает возможность переходить на «иную платформу» без серьезных переделок проекта. Но здесь нужно учитывать, что в каждой БД имеется собственный язык, который называется диалектом (расширением).
Обычно от выбранной СУБД зависит, какой язык предстоит использовать (или от навыков человека, который будет администрировать систему). Синтаксис конструкций у них сильно различается, как и формат обращения ко встроенным функциям, поэтому чаще всего тип БД для проекта выбирается раз и навсегда.
Инсталляция MS SQL Server
Подготовительный шаг – скачать установочный пакет SQL Server Enterprise с официальной страницы сайта Microsoft. После нажатия на кнопку «Бесплатная пробная версия» будет предложено выбрать вариант EXE или Azure («облако») и внести свои анкетные данные, при сохранении которых начнется загрузка инсталляционного файла.
Перед запуском установщика нужно создать учетную запись пользователя. Она пригодится для авторизации на сервере при запросе доступа с клиентских компьютеров (даже при условии, что ПК будет один и тот же).
Рекомендуется в имени и пароле использовать только буквы латиницы и цифры, кириллица будет привносить риски локальных сбоев из-за особенностей обработки. Теперь можно запускать файл с дистрибутивом MS SQL Server. Программа предложит 3 варианта действий: базовая инсталляция с настройками «по умолчанию», выборочный режим или скачивание файлов «на потом».
В большинстве случаев выбирается первый пункт, при нажатии на который предлагается прочитать и подтвердить лицензионное соглашение. На следующем шаге система позволяет вручную выбрать каталог для установки или согласиться с предложенным значением. Остается нажать на кнопку «Установить» и дождаться завершения процесса.
Файлы в основном скачиваются с официального сервера, поэтому понадобится стабильный доступ к интернету. Такой подход обеспечивает установку последнего релиза и проверку легитимности всех модулей (отсутствие вредоносного ПО). Последнее окно сообщает об успешном завершении, после которого можно сразу подключаться к серверу.
Зачем нужен SQL Server Management Studio
Для удобства администрирования также понадобится SQL Server Management Studio (SSMS). Он представляет собой интегрированную среду для управления инфраструктурой БД и поддерживает любые ее варианты – от локальной до Azure. В него встроены инструменты настройки, наблюдения и редактирования экземпляров баз данных.
Программные пакеты приложения также загружаются напрямую из интернета, поэтому требуется стабильный доступ к сети. После завершения установки будет запрошена перезагрузка компьютера. Все, система полностью готова к эксплуатации и созданию первой базы данных.
Хостинг-провайдеры обычно предлагают предустановленный комплект поддержки баз данных на SQL Server. Он не всегда последней версии, зато наверняка работоспособен в рамках как панели управления, так и публикуемых веб-ресурсов. Пользователю фактически предлагается сразу начать с создания БД – запрашивается всего лишь ее название, имя пользователя и пароль.
Исследование быстродействия СУБД MS SQL Server Developer 2016 и PostgreSQL 10.5 для 1С
Цели и требования к тестированию «1С Бухгалтерии»
Основной целью проводимого тестирования является сравнение поведения системы 1С на двух разных СУБД при прочих одинаковых условиях. Т.е. конфигурация баз данных 1С и первоначальная заполненность данными должны быть одинаковыми при проведении каждого тестирования.
Основными параметрами, которые должны быть получены при тестировании:
Для выполнения тестирования разработан алгоритм в виде скрипта сценарного тестирования, для конфигурации 1С Бухгалтерия 3.0, в котором выполняется последовательный ввод тестовых данных в систему 1С. Скрипт позволяет указать различные настройки по выполняемым действиям и количеству тестовых данных. Детальное описание ниже по тексту.
Описание настроек и характеристик тестируемых сред
Мы в компании Fortis решили перепроверить результаты, в том числе с помощью известного теста Гилева.
Также нас подстегнуло к тестированию в том числе и некоторые публикации по результатам изменения производительности при переходе от MS SQL Server к PostgreSQL. Такие как: 1С Батл: PostgreSQL 9,10 vs MS SQL 2016.
Итак, вот инфраструктура для тестирования:
1С | PostgreSQL | ||
---|---|---|---|
8 | 8 | 8 | |
16 | 32 | 32 | |
ОС | |||
Разрядность | x64 | x64 | x64 |
8.3.13.1865 | — | — | |
Версия СУБД | — | 13.0.5264.1 | 10.5 (4.8.5.20150623) |
Сервера для MS SQL и PostgreSQL являлись виртуальными и запускались поочередно для нужного теста. 1С стоял на отдельном сервере.
Спецификация гипервизора:
Model: Supermicro SYS-6028R-TRT
CPU: Intel® Xeon® CPU E5-2630 v3 @2.40GHz (2 sockes * 16 CPU HT = 32CPU)
RAM: 212 GB
ОС: VMWare ESXi 6.5
PowerProfile: Performance
Дисковая подсистема гипервизора:
Контроллер: Adaptec 6805, Cache size: 512MB
Volume: RAID 10, 5.7 TB
Stripe-size: 1024 KB
Write-cache: on
Read-cache: off
Диски: 6 шт. HGST HUS726T6TAL,
Sector-Size: 512 Bytes
Write Cache: on
PostgreSQL был настроен следующим образом:
Настройки заданы в формате файла профиля для демона tuned:
Все содержимое файла postgresql.conf:
MS SQL был настроен следующим образом:
Настройки кластера 1С оставили стандартными:
На серверах не стояла антивирусная программа и не было установлено ничего стороннего.
Для MS SQL, БД tempdb была вынесена на отдельный логический диск. Однако, файлы данных и файлы журналов транзакций для баз данных располагались на одном логическом диске (т е не было сделано разнесения файлов данных и журналов транзакций на отдельные логические диски).
Индексирование дисков в Windows, где располагалась MS SQL Server, было отключено на всех логических дисках (как это принято делать в большинстве случаев на продовских средах).
Основной предполагаемый период тестирования — 1 год, в течении которого по указанным параметрам на каждый день создаются документы и справочная информация.
На каждый день выполнения запускаются блоки ввода и вывода информации:
Основные возможности скрипта тестирования:
Результаты
А теперь самое интересное-результаты на СУБД MS SQL Server:
После оптимизаций для PostgreSQL, приведенных здесь и здесь, а также после проведения ряда работ по оптимизации ОС и файловой системы, которые были описаны выше, получили следующие результаты:
Показатель | PostgreSQL | % разности (улучшение) в СУБД PostgreSQL относительно СУБД MS SQL |
---|---|---|
14,41 | 12,55 | -14,82 |
+3,3 | ||
+66,83 | ||
42 | 70 | +66,67 |
Как видно из результатов, в общем синтетическом тесте СУБД PostgreSQL проиграла по производительности СУБД MS SQL в среднем на 14,82%. Однако, по последним двум показателям PostgreSQL показал значительно лучше результат, чем MS SQL.
Специализированные тесты для 1С Бухгалтерии:
Описание теста | PostgreSQL, сек | % разности (улучшение) в СУБД PostgreSQL относительно СУБД MS SQL | |
---|---|---|---|
1056,45 | 1064 | -0,7 | |
3230,8 | 3236,6 | -0,2 | |
1707,45 | 1738,8 | -1,8 | |
1859,1 | 1864,9 | -0,3 | |
Изменение структуры базы данных и реструктуризация | 30 | 22 | +26,7 |
Проведение документов ПТУ и РТУ за период с 01.01.2018 по 31.12.2018 | 138,5 | 164,5 | -15,8 |
Проведение всех документов ПТУ и РТУ в базе | 316 | 397 | -20,4 |
Выгрузка базы данных в файл формата *.dt | 87 | 87 | 0 |
Загрузка базы данных из файла формата *.dt | 201 | 207 | -2,9 |
Выполнение процедуры «Закрытие месяца за декабрь 2018 г. | 78 | 64,5 | +17,3 |
Как видно из результатов, 1С Бухгалтерия примерно одинаково работает и на MS SQL, и на PostgreSQL при данных выше настройках.
В обоих случаях СУБД работала стабильно.
Конечно возможно нужен более тонкий тюнинг как со стороны СУБД, так и со стороны ОС и файловой системы. Все делалось так, как вещали публикации, которые говорили, что будет значительный прирост в производительности или примерно будет одинаково при переходе с MS SQL на PostgreSQL. Более того, в данном тестировании проводился ряд мероприятий по оптимизации самой ОС и файловой системы для CentOS, которые описаны выше.
Стоит отметить, что тест Гилева запускался многократно для PostgreSQL-приведены самые лучшие результаты. По MS SQL был запущен тест Гилева 3 раза, т к далее оптимизацией по MS SQL не занимались. Все последующие попытки были привести слона к показателям MS SQL.
После достижения оптимальной разности по синтетическому тесту Гилева между MS SQL и PostgreSQL, были проведены специализированные тесты для 1С Бухгалтерии, описанные выше.
Общий вывод заключается в том, что, несмотря на существенную просадку в производительности по синтетическому тесту Гилева СУБД PostgreSQL относительно MS SQL, при должных настройках, данных выше, 1С Бухгалтерию можно установить как на СУБД MS SQL, так и на СУБД PostgreSQL.
Замечания
Сразу необходимо отметить, что данный анализ делался только для сравнения производительности 1С в разных СУБД.
Данный анализ и вывод корректны только для 1С Бухгалтерии при условиях и версиях ПО, описанных выше. На основе полученного анализа невозможно точно сделать вывод, что будет при других настройках и версий ПО, а также при другой конфигурации 1С.
Однако, результат теста Гилева позволяет предположить, что на всех конфигурациях 1С версии 8.3 и новее при должных настройках максимальная просадка в производительности вероятнее всего составит не более 15% для СУБД PostgreSQL относительно СУБД MS SQL. Также стоит учесть, что любое детальное тестирование для точного сравнения занимает значительное время и ресурсы. Исходя из этого, можно сделать более вероятное предположение, что 1С версии 8.3 и новее можно перенести с MS SQL на PostgreSQL с максимальной потерей производительности до 15%. Объективных препятствий для перехода не выявлено, т к эти 15% могут и не проявиться, а в случае их проявления, достаточно просто закупить немного мощнее оборудование при необходимости.
Также важно отметить, что тестируемые БД были небольшими, т е значительно меньше 100 ГБ размером данных, а также максимальное количество одновременно работающих потоков было 4. Это означает, что для больших баз, размер которых существенно больше 100 ГБ (например, около 1 ТБ), а также для баз с интенсивными обращениями (десятки и сотни одновременных активных потоков) данные результаты могут быть некорректными.
Для более объективного анализа, будет полезно в будущем сравнить выпущенную MS SQL Server 2019 Developer и PostgreSQL 12, установленных на одной и той же ОС CentOS, а также когда MS SQL стоит на последней версии ОС Windows Server. Сейчас же PostgreSQL никто не ставит на ОС Windows, т к просадка в производительности у СУБД PostgreSQL при этом будет весьма существенной.
На данный момент пока мы не готовы провести такой анализ, но в будущем вполне возможно его проведем. Тогда мы и напишем более подробно при каких операциях PostgreSQL лучше MS SQL и на сколько в процентах, а где MS SQL лучше PostgreSQL и на сколько в процентах.
Также в нашем тесте не были применены методы оптимизации для MS SQL, которые описаны здесь. Возможно в этой статье просто забыли выключить индексирование дисков Windows.
При сравнении двух СУБД надо помнить об еще одном весомом моменте: СУБД PostgreSQL бесплатная и открытая, тогда как СУБД MS SQL платная и имеет закрытый исходный код.
Теперь на счет самого теста Гилева. Вне тестов были сняты трассировки на синтетический тест (первый тест) и на все остальные тесты. По первом тесту в основном идут запросы как на атомарные операции (вставка, обновление, удаление и чтение), так и на сложные (с обращением к нескольким таблицам, а также создание, изменение и удаление таблиц в БД) с разными объемами обрабатывающих данных. Потому синтетический тест Гилева можно считать вполне объективным для сравнения средней унифицированной производительности двух сред (включая и СУБД) относительно друг друга. Т е сами абсолютные величины ничего не говорят, а вот их отношение двух разных сред вполне объективно.
На счет остальных тестов Гилева. По трассировке видно, что максимальное количество потоков было 7, однако вывод о количестве пользователей было более 50. Также по запросом не совсем понятно как вычисляются и прочие показатели. Потому остальные тесты не являются объективными и носят крайне вариативный и приближенный характер. Более точные значения дадут лишь специализированные тесты, учитывающие специфику не только самой системы, но и работы самих пользователей.
Благодарности
Послесловие
Также любопытный анализ делался в этой статье.
А какие результаты были у вас и как вы проводили тестирование?
Какую версию SQL Server использовать?
Прежде чем в очередной раз установить SQL Server, подумайте. Вы уверены насчет версии? Я знаю, руководство хочет оставаться на старой версии, и вендоры приложений говорят, что поддерживают только старые версии SQL Server, но теперь вы можете найти аргументы для новой версии.
Мы начнем издалека и посмотрим, что полезного было в каждой из версий.
Из-за срока окончания поддержки я не сторонник новых инсталляций SQL Server 2008. Так что, давайте двигаться дальше.
Вам нужны новые возможности, добавленные после SQL Server 2008:
В 2012 было представлено несколько новых возможностей: Availability Groups, Columnstore indexes, Contained databases, Data Quality Services. Но в то время они были настолько ограничены, что сегодня сложно считать эту версию хорошим началом для использования этих технологий.
В SQL Server 2014 также было представлено несколько технологий, которые уже никого не удивляют сегодня: In-Memory OLTP (непригодный для использования в то время), Buffer Pool Extensions, файлы данных в Azure blobs, резервное копирование по URL и Delayed Durability.
Да, я знаю, я здесь не написал «вы хотите очень известный, хорошо документированный продукт». Но это не потому, что продукт плохой. Просто он относительно новый по сравнению с 2012/2014/2016, и, кстати, гораздо сложнее найти готовое хорошее обучение по таким темам, как Distributed Availability Groups или SQL Server под Linux, а также нанять людей, которые знают, как их использовать.
Это не плохие технологии, это отличные технологии. Просто сейчас они еще на ранней стадии развития, так что сложно получить хорошие практики использования. Не невозможно, просто сложно.
Microsoft сделала ставки на новые технологии: кластеры больших данных (Big Data Clusters), высокая доступность в контейнерах и поддержка Java. Тем не менее, я просто не могу придумать аргументы в пользу того, чтобы сегодня (в декабре 2019 года) установить SQL Server 2019 только ради этих технологий. Если эти технологии вам действительно требуются (а это не просто ваше желание их попробовать), то вы уже должны изучать SQL Server 2019 в своих тестовых лабораториях. И, скорее всего, вы уже используете другие версии SQL Server.
Когда я смотрю на этот список сегодня, то SQL Server 2017 мне видится довольно подходящим вариантом для большинства. Это хороший баланс новых функций, стабильности и длительного срока поддержки. Сейчас во многих организациях, где люди перегружены работой и не могут обновлять сервера каждый год, я вижу экземпляры SQL Server 2017 с мониторингом того, как идет релиз SQL Server 2019 и планированием его развертывания в 2021 году.