MySQL.RU .:. Одобрено лучшими российскими программистами
Справочное руководство по MySQL1.10.4 Что должно быть сделано в ближайшем будущем
1.10.4 Что должно быть сделано в ближайшем будущем
-
Не разрешать более чем определенному количеству потоков одновременно
заниматься восстановлением
MyISAM -таблиц.
-
Изменение
INSERT ... SELECT с целью оптимального использования
одновременных вставок.
-
Возвращать истинные типы полей при выполнении
SELECT MIN(столбец)
GROUP BY .
-
Множественные результаты.
-
Сделать возможным задание
long_query_time с градацией в микросекундах.
-
Cлинковать код
myisampack прямо в сервер.
-
Перенос кода MySQL на QNX.
-
Перенос кода MySQL на BeOS.
-
Перенос MySQL-клиентов на LynxOS.
-
Добавление временного буферного кэша ключей во время выполнения
INSERT /DELETE /UPDATE , чтобы обеспечить изящное восстановление в
случае, если индексный файл окажется полностью заполненным.
-
Если выполняется работа
ALTER TABLE над таблицей, которая имеет
символическую ссылку на другой диск, создавать временные таблицы на
этом диске.
-
Реализация типа
DATE /DATETIME с корректной обработкой информации о
временных зонах, чтобы упростить работу с форматом даты для различных
временных зон.
-
FreeBSD и MIT-pthreads; отнимают ли спящие потоки время процессора?
-
Проверить, занимают ли блокированные потоки время процессора.
-
Исправить
configure так, чтобы можно было компилировать все библиотеки
(подобно MyISAM ) без потоков.
-
Добавить опцию периодического сброса на диск страниц ключей для таблиц
с запрещенными, в случае, если они некоторое время не использовались.
-
Возможность связывания по частям ключа (проблема оптимизации).
-
INSERT SQL_CONCURRENT и mysqld --concurrent-insert для выполнения
одновременной вставки в конец файла, если файл закрыт для чтения.
-
Серверные курсоры.
-
Проверить, работает ли
lockd с современными ядрами Linux; если нет, то
внести исправления в lockd ! Чтобы это протестировать, необходимо
запустить mysqld с --enable-locking и выполнить различные наборы
тестов на fork* . Они не должны выявить никаких ошибок, если lockd
работает.
-
Возможность использования SQL-переменных в
LIMIT , как, например, в
LIMIT @a,@b .
-
Возможность обновления переменных в операторах
UPDATE . Например:
UPDATE TABLE foo SET @a=a+b,a=@a, b=@a+c .
-
Изменение: если пользовательские переменные обновляются, то сделать
так, чтобы их можно было использовать с
GROUP BY , как в следующем
примере: SELECT id, @a:=COUNT(*), SUM(sum_col)/@a FROM table_name
GROUP BY id .
-
Запретить автоматическое внесение
DEFAULT -значений (значений по
умолчанию) в столбцы. Выдавать ошибку в случае использования INSERT ,
не содержащего столбца, для которого не определено значение по
умолчанию.
-
Исправить
libmysql.c так, чтобы две команды mysql_query() , идущие
подряд, могли работать без чтения результатов или с выдачей хорошего
сообщения об ошибке, если это все-таки происходит.
-
Проверка, почему функция
ctime() потоков MIT-pthreads не работает на
некоторых FreeBSD системах.
-
Добавление опции
IMAGE опции к LOAD DATA INFILE , чтобы не обновлять
поля TIMESTAMP и AUTO_INCREMENT .
-
Добавляемый синтаксис
LOAD DATE INFILE ... UPDATE .
-
Для таблиц с первичными ключами: если данные содержат первичный ключ,
строки, соответствующие этому первичному ключу, обновляются остальными
столбцами. Столбцы, которых нет во входных данных, остаются без
изменений.
-
Для таблиц с первичными ключами, для которых отсутствует некоторая
часть ключа во входном потоке данных или которые не имеют первичного
ключа, входные данные интерпретируются сейчас как
LOAD DATA INFILE ...
REPLACE INTO .
-
Сделать понятный синтаксис
LOAD DATA INFILE , подобно следующему:
LOAD DATA INFILE 'file_name.txt' INTO TABLE tbl_name
TEXT_FIELDS (text_field1, text_field2, text_field3)
SET table_field1=CONCAT(text_field1, text_field2),
table_field3=23
IGNORE text_field3
Такой синтаксис может быть использован для пропуска лишних столбцов в
текстовом файле или для обновления столбцов на основе выражений,
построенных по прочитанным данным.
-
LOAD DATA INFILE 'file_name' INTO TABLE 'table_name' ERRORS TO
err_table_name . Этот оператор задает запись всех ошибок и
предупреждений в таблицу err_table_name , которая будет иметь
структуру, подобную следующей:
line_number - номер строки в файле данных
error_message - сообщение об ошибке/предупреждение
и, возможно
data_line - строка из файла данных
-
Автоматический вывод из
mysql в Netscape.
-
LOCK DATABASES (с различными опциями.)
-
Функции:
ADD_TO_SET(value,set) и REMOVE_FROM_SET(value,set) .
-
Добавить использование
t1 JOIN t2 ON ... и t1 JOIN t2 USING ... В
данное время можно использовать этот синтаксис только с LEFT JOIN .
-
Намного большее количество переменных для
SHOW STATUS . Фиксирование
операций чтения и обновления. Выборки по 1 таблице и выборки по
связям. Среднее число таблиц в выборке. Большое число запросов ORDER
BY и GROUP BY .
-
Если вы прерываете выполнение запроса в середине, необходимо открыть
другое соединение и убить старый выполнявшийся запрос. В свою очередь,
сервер должен распознавать это на своей стороне.
-
Добавить интерфейс обработчика для табличных данных таким образом,
чтобы была возможность использовать его как системную таблицу. Это
будет работать несколько медленно в случае запрашивания информации обо
всех таблицах, но очень гибко. Должен быть реализован
SHOW INFO FROM
tbl_name для основных данных о таблицах.
-
Сделать возможным
SELECT a FROM crash_me LEFT JOIN crash_me2 USING
(a) ; в данном случае подразумевается, что a будет браться из
таблицы crash_me .
-
Oracle-подобный
CONNECT BY PRIOR ... для изучения иерархических
структур.
-
mysqladmin copy database new-database ; требуется добавить команду COPY
в mysqld .
-
Список процессов должен показывать количество запросов/потоков.
-
SHOW HOSTS для распечатки информации о кэше имен хостов.
-
Опции
DELETE и REPLACE для оператора UPDATE (оператор с этими опциями
будет удалять строки при получении ошибки дублирующихся ключей во
время обновления).
-
Изменить формат
DATETIME , чтобы сохранять порции в секундах.
-
Добавить все недостающие типы ANSI92 и ODBC 3.0.
-
Изменить имена таблиц с пустых строк на
NULL для вычисляемых столбцов.
-
Не использовать
Item_copy_string для числовых значений во избежание
преобразований число->строка->число в случае: SELECT COUNT(*)*(id+0)
FROM table_name GROUP BY id
-
Сделать возможным использование новой библиотеки
GNU regexp вместо
текущей (библиотека GNU должна быть намного быстрее, чем предыдущая).
-
Сделать так, чтобы
ALTER TABLE не срывал работу INSERT DELAYED .
-
Сделать следующее исправление: если на столбцы есть ссылки в выражении
UPDATE , они будут содержать значения, хранившиеся там до запуска
процесса обновления.
-
Добавить эмуляцию
pread() /pwrite() под Windows, чтобы сделать
возможными одновременные вставки.
-
Разработать анализатор файла журнала для анализа и выдачи информации о
том, какие таблицы используются наиболее часто, насколько часто
выполняются мультитабличные связи и т.д. Это помогло бы пользователям
выбирать такую конструкцию таблиц и областей, которая могла бы быть
оптимизирована для выполнения наиболее эффективных запросов.
-
Добавить
SUM(DISTINCT) .
-
Добавить групповые функции
ANY() , EVERY() и SOME() . В ANSI SQL эти
функции работают только с булевыми столбцами, но мы можем расширить
эти функции, чтобы они работали с любыми столбцами/выражениями,
применив: value == 0 -> FALSE и value <> 0 -> TRUE .
-
Добиться, чтобы тип для
MAX(column) был таким же как и тип столбцов:
mysql> CREATE TABLE t1 (a DATE);
mysql> INSERT INTO t1 VALUES (NOW());
mysql> CREATE TABLE t2 SELECT MAX(a) FROM t1;
mysql> SHOW COLUMNS FROM t2;
-
Придумать хороший синтаксис для оператора, который будет выполнять
UPDATE
над строкой при наличии таковой, и INSERT новой строки, если строка
отсутствует (подобно тому, как REPLACE работает с INSERT / DELETE ).
|