Несмотря на предупреждение что experimental, система у меня тоже experimental, решил я использовать MySQL 6.0 на FreeBSD 7.2. В процессе апгрейда портов (а также ядра и мира), выяснилось что MySQL 60 вроде как нет и не будет, что они там делят dntknw, - ладно поставил 55, и затем попробовал 51, тоже самое. Собственно тормозит корелированный запрос ANY.На домашнем компе K7 под виртуалкой осталась MySQL 60 таблицу туже туда еле загрузил, вобщем результаты:
Сначала конфигурация:
HOME:
CPU: AMD K7 processor (1750.50-MHz 686-class CPU)
FreeBSD home 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri Jun 4 20:00:59 MSD 2010 user@home:/usr/obj/usr/src/sys/VMKERNEL i386
mysql Ver 14.15 Distrib 6.0.10-alpha, for portbld-freebsd7.2 (i386) using 5.2WORK:
CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ (2009.13-MHz K8-class CPU)
FreeBSD work 8.2-RC3 FreeBSD 8.2-RC3 #0: Mon Feb 7 21:31:45 MSK 2011 user@work:/usr/obj/usr/src/sys/BSDKERNEL amd64
mysql Ver 14.14 Distrib 5.5.8, for FreeBSD8.2 (amd64) using EditLine wrapperиндексы:
+--------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| source | 0 | PRIMARY | 1 | id | A | 25351 | NULL | NULL | | BTREE | | |
| source | 1 | dest_source_id | 1 | dest_id | A | 25351 | NULL | NULL | YES | BTREE | | |
+--------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+mysql> select * from source where (dest_id,id) = any ( select dest_id,max(id) from source group by dest_id ) limit 100; (400, 1000)
HOME:
100 rows in set (0.02 sec)
400 rows in set (0.03 sec)
1000 rows in set (0.05 sec)WORK:
100 rows in set (4.88 sec)
400 rows in set (12.64 sec)
1000 rows in set (2 min 18.96 sec)8 - [ ~ ]
однако:
mysql> select dest_id,max(id) from source group by dest_id limit 1000;
HOME:
1000 rows in set (0.01 sec)WORK:
1000 rows in set (0.00 sec)MySQL установил как есть, ничего не настраивал, только запустил mysql_install_db.
1. ставить 60 через csup, я не замечал, но говорят проблемы: http://lists.freebsd.org/pipermail/freebsd-questions/2009-No...
2. настройка какая-то нужна?
3. по другому запрос записать?
4. мож патч какой есть, наверняка что нибудь специально тормозитПереход на PostgreSQL желателен только в крайнем случае.
Комментарии и мнения, советы... Заранее Спасибо.
Оказывается что на 5.5 подзапрос воспринимается как зависимый, а на 6.0 все в порядке. но проблема в том что непонятно что происходит с 6.0, ее нельзя поставить на FreeBSD по крайней мере из портов ее убрали, сказано что deprecated http://lists.freebsd.org/pipermail/cvs-all/2010-January/3039..., http://www.freshports.org/databases/mysql60-server как пишется: 'use 5.5 instead', невсегда возможно.
Как я понимаю патчи на подзапросы в отдельном виде для 5.5 не существуют. остается или перелопачивать проект, ждать версию или переходить на другую субд.Хотелось бы знать известно ли что либо о дальнейшей судьбе mysql как будет развиваться и когда может появиться очередная версия или патчи?
Заранее спасибо
> Оказывается что на 5.5 подзапрос воспринимается как зависимый, а на 6.0 все
> в порядке.mysql> select * from source where (dest_id,id) = any ( select dest_id,max(id) from source group by dest_id ) limit 100; (400, 1000)
Вы про это?
Флаг Вам в руки. Хоть раз план выполнения запроса на используемом движке посмотрите. Это Вам не Perl и не grep выражения. Хотите простой синтаксис запросов - в путь (MySQL идет в этом напралении, но стандарты забывать не следует.). Надо отличать языки программирования 4-го уровня от других таки...PS
и структуру БД надо формировать так, чтоб дебильных запросов к ней не было.но проблема в том что непонятно что происходит с
>[оверквотинг удален]
> 6.0, ее нельзя поставить на FreeBSD по крайней мере из портов
> ее убрали, сказано что deprecated http://lists.freebsd.org/pipermail/cvs-all/2010-January/3039...,
> http://www.freshports.org/databases/mysql60-server как пишется: 'use 5.5 instead',
> невсегда возможно.
> Как я понимаю патчи на подзапросы в отдельном виде для 5.5 не
> существуют. остается или перелопачивать проект, ждать версию или переходить на другую
> субд.
> Хотелось бы знать известно ли что либо о дальнейшей судьбе mysql как
> будет развиваться и когда может появиться очередная версия или патчи?
> Заранее спасибо