Архив

Архив раздела ‘MySQL’

MySQL 5.1 vs 5.4

25 Сентябрь 2009 Нет комментариев

За взялся и GOOGLE, что обнадёживает :)

Читая о новостях в разработке MySQL, наткнулся на несколько интересных статеек. Всем, кто имеет непосредственное отношение к БД, да и тем, кто раздумывает над выбором , рекомендую ознакомиться:

1. http://dev.mysql.com/doc/mysql-5.4-features/en/smp-improvements.html Scalability Improvements

2. http://dev.mysql.com/tech-resources/articles/mysql-54.html A Quick Look at MySQL 5.4; В статье приведены интересные графики сравнения веток 5.1 и 5.4 по производительности. Описаны улучшения, касающиеся подзапросов(кстати те, которых ждали от ветки 6.0, но так и не дождались :) ), JOIN и другого.

В бонус можно почитать о создании plugin для MySQL(аналог расширенных хранимых процедур в MS )

http://dev.mysql.com/doc/refman/5.1/en/plugin-api.html

Скачать MySQL 5.4 можно тут: http://dev.mysql.com/downloads/mysql/5.4.html

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes )

Пользуемся триггерами(trigger)

28 Август 2009 Нет комментариев

Ранее я писал об использовании Stored Procedures, теперь пришёл черёд триггеров. В отличие от хранимых процедур, триггера я принял сразу. Очень удобная и полезная штука. Если вы хотите отследить вставку, изменение или удаление записи, то триггеры именно для этих задач. Как вы знаете, триггеры можут быть 3 типов(DML): на , и update; то есть триггер сработает на указанное действие с данными в таблице БД delete, insert или update , в зависимости от его типа. Выполняться он может до(before) или после(after) того действия(delete, insert или update) которое его вызвало. Триггеры before полезны, например,  для того, чтобы вы могли предупредить какое либо недопустимое, или несогласованное с логикой бизнесс процесса действие с данными. Он выполняется до вызвавшего его действия, а значит с помощью него можно это действие отменить, проверив данные на валидность с помощью sql statements вашего тригера. Триггеры after, выполняютя после действия, которое его инициировало и полезны, например для логирования изменений данных.

Читать далее…

VN:F [1.9.13_1145]
Rating: 9.5/10 (2 votes )

Ускоряем и оптимизуруем Delete из таблиц

26 Август 2009 1 комментарий

В одной из своих записей я уже рассказывал о способах ускорения insert. В этой записи я расскажу о простейших способах оптимизиции и ускорении удаления строк из таблиц. В принципе, способы удаления схожи со способами вставки во многом.

Итак:

1. Вместо построчного удаления делайте массовое(сразу все строки, которые нужно удалить), т.к. при массовом удалении индекс претерпит изменения лишь раз, вместо постоянного передёргивания при построчном удалении. Например:

вместо

from tablename where field1=2

delete from tablename where field1=3

delete from tablename where field1=4,

лучше записать так -

delete from tablename where field1=2 or field1=3 or field1=4

2. Если при удалении вы уверены, что никто не будет делать запрос к таблице, то делайте «LOCK TABLE».

3. Если есть возможность перефразировать запрос на удаление указывая в разделе WHERE условие по полю первичного ключа, то целесообразно будет сделать именно так. Этот запрос будет не только быстрее, но и не будет блокировать таблицу.

VN:F [1.9.13_1145]
Rating: 9.3/10 (3 votes )
Categories: MySQL, SQL Server, T-SQL Tags: , , ,

Cast() и Convert().

24 Август 2009 Нет комментариев

Функции () и () дают возможность преобразовывать выражения одного типа в другой.

Для MSSQL Server синтаксис:

CAST ( expression AS data_type [ (length ) ])

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Для :

CAST(expr AS type)

CAST() функция принимает данные одного типа и возвращает результат другого типа, как и CONVERT().

CONVERT(expr,type), CONVERT(expr USING transcoding_name)

Подробнее MS SQL http://msdn.microsoft.com/ru-ru/library/ms187928.aspx

и MySQL    http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)
Categories: MySQL, SQL Server, T-SQL Tags: , , , ,

Оптимизиция по индексам. Советы. Часть 1.

16 Август 2009 Нет комментариев

Этой записью начинаю цикл статей по оптимизации БД с помощью индексов. Если вы хотите найти точный ответ на вопрос «какие индексы я должен создать чтобы производительность была оптимальной?», то не ищите его(ответ) ни тут, ни где-либо ещё. Нет чёткого правила где и какие индексы нужно создавать. Есть лишь советы рекомендательного характера, а вариантов построения индексов для одной базы данных очень много. Где и какие индексы строить зависит от назначения таблиц, частоты запросов на выборку и частоты изменения этой таблицы, от частоты участия в выборке оперделённой группы полей и т.д. и т.п.

Советы:

Читать далее…

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote )

Имя базы данных в sql-командах MySqlDataAdapter

15 Август 2009 Нет комментариев

Логично оставить имя базы данных, с которой работает программа, переменным, задаваемым опционально.

Но если Вы используете .NET connector и типизированный DataSet, то столкнетесь с неприятным фактом…
Читать далее…

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes )

Быстрый массовый insert данных.

10 Август 2009 1 комментарий

Одной из часто встречаемых проблем при работе с данными, является скорость вставки большого количества строк в таблицы баз данных. Можно использовать построчную вставку в цикле, но например для достаточно быстро выполнится с множественным указанием значений values, например :

insert into tablename(field1,field2) values(val11,val12) ,(val21,val22),(val31,val32),…

Читать далее…

VN:F [1.9.13_1145]
Rating: 10.0/10 (1 vote )

Аналог SQL Server Jobs в MySQL

Администраторы и программисты, имеющие дело с , хорошо знают и нередко пользуются Agent’а. Вот и начиная с версии 5.1 реализовал нечто подобное. Зовётся новая функция просто Event.
Рассмотрим же её более тщательно. Читать далее…

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes )
Categories: MySQL, SQL Server Tags: , ,