2011-02-11

MySQL links and tips

Links
1. Сам MySQL и документацию (жаль в chm перестали делать) брать здесь:
http://dev.mysql.com/downloads/mysql/


2. Java JDBC Driver:
http://dev.mysql.com/downloads/connector/j/


3. Простая, легкая консоль (я пользуюсь ею для повседневных нужд - это free OS урезная редакция):
http://code.google.com/p/sqlyog/


4. Очень навороченная, крутейшая консоль+enterprise manager+отчеты
(можно в некоторых случаях отчеты делать не в web UI, а используя эту студию):
http://www.devart.com/ru/dbforge/mysql/studio/

Вот список возможностей:
http://www.devart.com/ru/dbforge/mysql/studio/features.html
в частности:
# Генерация отчетов данных
# Построение сводных таблиц

У них, кстати, много ещё вкусного free4personal для cp1251 users:
http://www.devart.com/ru/dbforge/


5. Советую подписаться на MySQL newsletter (на сайте MySQL легко найти)
бывают интересные статьи, советы, новости, интервью с экспертами.


6. Блог о тюнинге MySQL
mysqlperformanceblog.com
Лучше читать записи постарее (в новых много слишком заумного и про их порт).



Performance super mini faq
В my.ini/my.cnf файле конфигурации есть опция innodb_flush_log_at_trx_commit, внимательно почитайте про неё.
innodb_flush_log_at_trx_commit=0  - вполне разумный выбор IMHO


Vars
К сожалению, в запросе MySQL трудно написать сложную программу с if, while и тд, как это можно сделать в t-sql. В MySQL всё должно представлять из себя выражение см на примере if.
Но переменные это что-то! Их не надо муторно объявлять с типом и можно использовать в самых удивительных местах.
Пример (чтобы в Java работало несколько statement; в запросе не забудьте allowMultiQueries=true в JDBC Connection String/URL):

set @a = null; set @b = null; set @c = null;

select @a, @b, @c;-- null, null, null - всё чисто и готово к эксперименту

select 'boo!', @a+@b+@c
FROM (SELECT @a := 1, @b := 2, @c := 3) t; -- boo!, 6 т.е. from отработал раньше

select @a, @b, @c;-- 1,2,3 значения сохранились

select @a, @b, @c from (select @a := @a*10, @b:=@b*20, @c:=@c*30) t;-- 10,40,90 опять from отработал раньше

select @a, @b, @c;-- 10,40,90 и значения сохранились


SqlWatch
Отличная утилита code.google.com/p/sqlwatch !
Ставится как "JDBC proxy", предоставляет широкие возможности для профилирования sql запросов приложения.

JDBC Connection String
Сейчас использую следующий набор опций: jdbc:mysql:///название_БД?connectTimeout=180000&allowMultiQueries=true&cacheServerConfiguration=true&useLocalSessionState=true&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true
 

Комментариев нет: