# Главная
# О библиотеке

# Выбор дистрибутива
преимущества Linux/UNIX | основные дистрибутивы | серверный Linux | BSD | LiveCDs | прочее

# Установка и удаление программ
общие вопросы | каталоги софта | специальные случаи

# Настройка и работа
установка, загрузчики | настройка Linux | консоль | файловые системы | процессы | шеллы, русификация, коммандеры | виртуальные машины, эмуляторы

# X Window и оконные менеджеры
настройка X Window | GNOME | KDE | IceWM и др.

# Работа с текстами
редакторы | офис | шрифты, кодировки и русификация | преобразования текстовых файлов | LaTeX, SGML и др. | словари

# Графика
GIMP | фото | обработка изображений | форматы графических файлов

# Сети, администрирование
общие вопросы | Dialup & PPP | брандмауэры | маршрутизация | работа в Windows-сетях | веб-серверы | Apache | прокси-серверы | сетевая печать | прочее

# Программирование
GCC & GNU make | программирование в UNIX | графические библиотеки | Tcl | Perl | PHP | Java & C# | СУБД | CVS | прочее

# Ядро
# Мультимедиа
# Интернет
# Почта
# Безопасность
# Железо
# Разное

# Linux HowTo (как сделать)
# Книги и руководства
# Материалы на английском языке


MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 1 Общая информация
    • 1.10 MySQL и будущее (что предстоит сделать)
      • 1.10.1 Что планируется реализовать в версии в 4.0
      • 1.10.2 Things That Should be in 4.1
      • 1.10.3 Что планируется реализовать в версии 5.0
      • 1.10.4 Что должно быть сделано в ближайшем будущем
      • 1.10.5 То, что надо сделать когда-нибудь
      • 1.10.6 То, чего не планируется делать

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

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).

User Comments

Posted by Federico Razzoli on Wednesday October 30 2002, @2:12am[Delete] [Edit]

"Don't add automatic DEFAULT values to columns. Give an error when using an INSERT that doesn't contain a column that doesn't have a DEFAULT." -- I don't agree. When an INSERT doesn't specify some values (even if fields have default values!), MySQL should give a warning message but not an error. I mean: user should be warned but the INSERT should work anyway.

Posted by [name withheld] on Tuesday December 3 2002, @1:58am[Delete] [Edit]

"even if fields have default values"? This is a
fundamental feature of almost all databases. Surely
a warning is unnecessary.

Posted by Charles Holmes on Thursday January 9 2003, @11:15pm[Delete] [Edit]

I think the Oracle-like CONNECT BY PRIOR function would be very helpful. Thank you.

Posted by [name withheld] on Friday February 7 2003, @12:24am[Delete] [Edit]

I also think that CONNECT BY would solve many functional problems.

thx, tomaz

Posted by Bob Donahue on Friday February 7 2003, @10:13am[Delete] [Edit]

If CONNECT BY isn't going to be implemented SOON, can someone reference a work around? Unfortunately most of what's on the WWW also requires features not present in MySQL (procedures, subselects [for V3.23], etc.).

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.