div.main {margin-left: 20pt; margin-right: 20pt}
Портирование кода из mSQL в MySQL
Чем отличается реализация протокола клиент/сервер в MySQL от своего аналога в mSQL?
Отличия между msql 2.0b7 и MySQL
Перенос прикладных программ mSQL в MySQL относительно прост.
Сначала выполните скрипт msql2mysql (поставляется вместе с MySQL) над вашим источником. Он оттранслирует имена функций mSQL в имена функций MySQL. Но он не будет корректировать типы параметров или изменять число параметров в функциях MySQL, которые нуждаются в дополнительных параметрах.
Замечания:
MySQL использует структуру данных MYSQL как тип для соединения с базой данных (mSQL использует int).
mysql_connect получает указатель на структуру MYSQL как параметр. Вы можете определять его глобально или использовать malloc, чтобы его получить.
mysql_connect получает 2 дополнительных параметра (логин и пароль пользователя). По умолчанию, они установлены в NULL.
mysql_error получает параметр типа MYSQL.
MySQL поставляется с портированными версиями тестовых программ mSQL insert_test.c и select_test.c. Хорошая идея сравнить их с их mSQL эквивалентами. Это должно дать Вам хорошее начало для понимания, что Вы будете должны сделать для портирования mSQL программы в MySQL. Это также даст Вам некоторые мысли о том, что Вы должны делать, чтобы написать свою MySQL программу.
Чем отличается реализация протокола клиент/сервер в MySQL от своего аналога в mSQL?
Имеются значительные различия. Среди них:
Буфер сообщений может содержать много строк результатов.
На стороне сервера размер буфера сообщений динамически подстраивается по мере необходимости для больших запросов пользователя.
Все пакеты пронумерованы, для синхронизации пакетов.
Все столбцы представлены в ASCII, длина столбцов и длины строк представлены с помощью двоичного кодирования (1, 2 или 3 байта).
MySQL может читать результаты без буферизации.
Если одна запись/чтение занимает свыше 30 секунд, сервер закрывает соединение.
Если соединение неактивно в течение 8 часов, сервер закрывает соединение.
Отличия между msql 2.0b7 и MySQL
CREATE TABLE:
MySQL: имеет опции для поля: UNSIGNED, ZEROFILL, имеет значение по умолчанию для не пустых полей.
mSQL: опций не имеет.
Создание индексов:
MySQL:Все индексы должны быть заданы в CREATE TABLE.
mSQL:Индексы должны быть созданы отдельным оператором CREATE INDEX. (msql использует новый файл ключа для каждого индекса?) Индексы могут быть удалены оператором DROP INDEX
Для получения уникального идентификатора при вставке:
MySQL: Используйте 'auto_increment' как определение типа столбца. Используемый индекс может быть получен после обновления функцией API mysql_insert_id().
mSQL: Создает структуру SEQUENCE для таблицы и использует функцию __seq для получения уникального индекса.
Групповые функции:
MySQL: count(), avg(), min(), max() и sum(). min() и max() могут принимать строковые аргументы. count(*) оптимизирована для возвращения значения в случае одного столбца.
mSQL: Нет.
Независимый от регистра поиск:
MySQL: LIKE обязательно не зависит от регистра. Если возможно, MySQL использует индексы при условии, что подобный параметр не начинается с подстановочных знаков.
mSQL: Использует CLIKE.
Поиск с регулярными выражениями.
MySQL: Использует REGEXP or RLIKE
mSQL: Использует RLIKE.
Какие различия в операторе WHERE:
MySQL имеет скобки, Скоро он будет иметь полную функциональную поддержку оператора WHERE (это планируется для версии 3.21.X).
Имена столбцов:
MySQL: Если имя столбца уникально, Вы не должны использовать полное имя.
mSQL: При использовании более чем одной таблицы в SELECT, Вы должны использовать полное имя таблицы.
Псевдонимы:
MySQL: Псевдонимы для таблиц и столбцов.
mSQL: Псевдонимы для таблиц.
Insert/update с вычислениями:
MySQL: Полная поддержка вычислений. В insert можно использовать значения предшествующих полей.
mSQL: Только константы в insert и update.
Какие формулы могут использоваться в инструкции select:
MySQL: См. руководство.
mSQL: Никакие.
HAVING:
MySQL: Поддерживается, но может использовать вычисление только на выбранных полях. Для select на расчетном значении, нужно использовать псевдоним столбца.
ПРИМЕР:
SELECT COUNT(*) AS id_count, id FROM groups GROUP BY id
HAVING id_count > 10
mSQL: Не поддерживается вовсе.
Импорт и экспорт данных:
MySQL: MySQL имеет соответствующие функциональные возможности, включая сервис для импорта данных посредством оператора LOAD DATA INFILE, что весьма ускоряет загрузку данных.
mSQL: Внешние программы.
Источник: http://helper10.narod.ru/
|