Более 11 миллионов Инсталляций по миру Wikipedia Youtube Facebook Flickr Примеры использования
MySQL Community Server Бесплатен MySQL Enterprise От 600$ за простую редакцию До 5000$ за редакцию Platinum
1 процессор Максимальное использование оперативной памяти – 1 Гб Максимальный объем базы данных – 4 Гб
ВерсияДата Первый внутренний выпускМай 1995 Первая версия для WindowsЯнварь Январь Март Октябрь Октябрь Ноябрь Alpha MariaPreview
Независимые механизмы хранения таблиц (MyIsam, InnoDb) Возможность создания таблиц в памяти (Heap-таблицы) Merge-таблицы Репликация Полнотекстовый поиск Январь 2001 года
Март 2003 года Движок InnoDB включен в стандартный пакет Усовершенствование Merge-таблиц Кеширование запросов Поддержка UNION-запросов Значительные улучшения в полнотекстовом поиске SSL-соединения
Октябрь 2004 года Вложенные запросы и производные таблицы Поддержка Unicode (UTF-8) Улучшенные механизмы кодировок, сортировок, полнотекстового поиска Более гибкий и быстрый протокол клиент- сервер
Октябрь 2005 года Хранимые процедуры и функции Курсоры Триггеры Представления
Ноябрь 2008 года Разбиение файлов на части Построчная репликация Встроенный планировщик Возможность хранения логов в таблицах Функции для работы с XML Load Emulator Berkeley DB не поддерживается
MyISAMInnoDBBerkeleyDB MergeHeap
Тип, используемый по умолчанию Могут быть статическими, динамическими и сжатыми Обеспечивают максимальное быстродействие Не поддерживают транзакции и ссылочную целостность Максимальный размер ограничен требованиями файловой системы Возможность полнотекстового поиска
Блокировка на уровне строк Поддержка внешних ключей Транзакции Собственный механизм хранения данных Зачастую запрещен к использованию в рамках виртуального хостинга
Merge-таблицы представляют собой логическое объединение нескольких таблиц (фактически – аналог UNION) Ранее использовались для обхода ограничения на максимальный размер файла в операционных системах CREATE TABLE myTable ( ….. ) type=merge union=(table1, table2, table3) insert_method=last;
Last_Records Последние 1000 записей Last_Records Other_Records Все остальные записи Other_Records All_RecordsAll_Records На практике часто бывают нужны только последние N записей. Таблица Last_Records будет работать быстрее благодаря меньшему размеру. В остальных (более редких) случаях – запрос для merge- таблицы. На практике часто бывают нужны только последние N записей. Таблица Last_Records будет работать быстрее благодаря меньшему размеру. В остальных (более редких) случаях – запрос для merge- таблицы.
Наиболее быстрые таблицы Приходится следить за размером таблицы При сбое питания данные теряются Не поддерживаются AUTO_INCREMENT, TEXT и BLOB-данные
В MySQL сжатые данные доступны только для чтения. При записи происходит распаковка таблицы, затем запись, затем упаковка В MSSQL 2008 – возможно прозрачное сжатие данных
MySQLMSSQL PHPВстроенная поддержка PerlМодули DBI C, C++, etc.ODBC-драйвер, mysqlclient, C++- драйвер ADO, ODBC, etc.NETADO.Net-драйверADO.Net
Значительные отличия в манипулировании структурами таблиц (тип таблиц у MySQL, AUTO_INCREMENT и т.п.) Присутствуют отличия в функциях (ISNULL, CONCAT и т.п.) SELECT, INSERT, UPDATE, DELETE в целом схожи (но есть нюансы – например, SQL Server не поддерживает JOIN USING и т.д.) Приятность MySQL – оператор LIMIT В MySQL: SELECT * FROM user, в SQL Server: SELECT * FROM [user] Неприятный итог: если приложение «захардкожено» под MySQL, то перенос потребует немалых сил
В каких случаях на практике требовался переезд: Всплывший факт о том, что MySQL вовсе не бесплатна; Не устраивают даже стандартные фичи MySQL – например, нужен одновременно полнотекстовый поиск и внешние ключи; Нужен дополнительный функционал, имеющийся в SQL Server. Что нужно для переезда: Правка SQL-запросов, зашитых в приложение; Перенос структуры базы данных и самих данных. Раньше – вручную, теперь – с помощью Microsoft SQL Server Migration Assistant for MySQL.
Демонстрейшн
База данных: AdventureWorks для SQL Server 2005 Для корректности эксперимента перенесена вручную в MySQL (InnoDB), затем оттуда в SQL Server Express 2008 с помощью SSMA Условия: Тестируем на запросах различной сложности; Тестируем с разным количеством параллельных потоков; Тестируем с возможностью кеширования запросов (10 и 20 однотипных запросов) Запросы: Полные SELECT маленьких, средних и больших таблиц SELECT с простыми условиями SELECT со сложными условиями и JOIN
Полный SELECT маленьких таблиц (до строк)
Полный SELECT средних таблиц (до строк)
Полный SELECT больших таблиц (порядка строк)
SELECT с несложными условиями, без кеширования
SELECT с несложными условиями, кеширование 10
SELECT с несложными условиями, кеширование 20
SELECT со сложными условиями + JOIN, без кеширования
SELECT со сложными условиями + JOIN, кеширование 10
SELECT со сложными условиями + JOIN, кеширование 20
Скачать программу Можно скачать и исходный проект, и инсталляционный вариант
Неволин Александр ICQ: (926)