1. Informações Gerais
1.6. MySQL e o Futuro (o TODO)
1.6.4. Novos Recursos Planejados Para a Versão em um Futuro Próximo
• Novas funcionalidade
• Comando como do OracleCONNECT BY PRIOR ...para estruturas de busca tipo árvore (hierárquica) • Adicionar todos os tipos que faltam do SQL-92 e ODBC 3.0.
• AdicionarSUM(DISTINCT).
• INSERT SQL_CONCURRENTemysqld --concurrent-insertpara fazer uma inserção concorrente no fim do ar- quivo se o arquivo tiver lock de leitura.
• Permitir a atualização de variáveis nas instruçõesUPDATE. Por exemplo:UPDATE TABLE foo SET @a=a+b,a=@a, b=@a+c.
• Alterar quando as variáveis de usuários são atualizadas e assim pode se usá-las comGROUP BY, como no exemplo a segu- ir:SELECT id, @a:=COUNT(*), SUM(sum_col)/@a FROM nome_tabela GROUP BY id.
• Adicionar a opçãoIMAGEaLOAD DATA INFILEpara não atualizar camposTIMESTAMPeAUTO_INCREMENT. • Adicionar a sintaxeLOAD DATA INFILE ... UPDATEque funciona assim:
• Para tabelas com chaves primárias, se o registro de entrada contém um valor de chave primária, linhas existentes corres- pondendo às chaves primárias são atualizadas para o restante das colunas de entrada. No entanto, colunasfaltosas
na inserção dos registros de entradas não são alteradas.
• Para tabelas com chaves primárias, se um registro de entrada não contém um valor de chave primária ou estrá faltando alguma parte da chave, o registro é tratado como umLOAD DATA INFILE ... REPLACE INTO.
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
Isto pode ser usado para saltar colunas extras no arquivo texto, ou atualizar colunas baseadas nas expressões dos dados li- dos.
• Novas funções para tyrabalhar com tipos de colunasSET: • ADD_TO_SET(valor,conjunto)
• REMOVE_FROM_SET(valor,conjunto)
• Se você abortar omysqlno meio de uma consulta, você deve abrir outra conexão e matar a consulta antiga em execução. Alternativamente, deve ser feita um tentativa de detecção deste problema no servidor.
• Adicione um interface do mecanismo de armazenamento para informações da tabela assim que você puder usá-la como uma tabela de sistema. Isto seria um pouco mais lento se você pedisse informações sobre todas as tabelas, mas muito flexível.
SHOW INFO FROM tbl_namepara informações básicas das tabelas deve ser implementado.
• PermiteSELECT a FROM crash_me LEFT JOIN crash_me2 USING (a); neste caso é considerado queavem da tabelacrash_me.
• OpçõesDELETEeREPLACEpara a instruçãoUPDATE(isto deletará registros quando se tiver um erro de chave duplicada durante a atualização).
• Altera o formato deDATETIMEpara armazenar frações de segundo.
• Possibilitar o uso da nova biblioteca regexp GNU em vez da atual (a biblioteca GNU deve ser muito mais rápida que a anti- ga).
• Compatibilidade com os padrões, portabilidade e migração
• Não adicionar valoresDEFAULTautomáticos as colunas. Enviar um erro ao usar umINSERTque não contenha uma colu- na que não tenha umDEFAULT.
• Adicionar as funções de agrupamentoANY(),EVERY()eSOME(). No padrão SQL isto só funciona em colunas boolea- nas, mas podemos extendê-las para funcionar em qualquer coluna/expressão tratando valores 0 como FALSE e valores dife- rentes de 0 como TRUE.
• Corrigir para que o tipo deMAX(coluna)seja o mesmo do tipo da coluna:
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;
• Aumento de velocidade
• Não permitir mais que um número definido de threads façam a recuperação do MyISAM ao mesmo tempo. • AlterarINSERT ... SELECTpara usar inserções concorrentes opcionalmente.
• Adicionar uma opção para descarregar paginas de chaves para tabelas com delayed keys se elas não forem usados por um tempo.
• Permitir joins em partes de chaves (otimização).
• Adicionar simulação depread()/pwrite()no Windows para permitir inserções concorrentes.
• Um analizador de arquivos de log que possam analizar informações sobre quais tabelas são usadas com mais frequência, a frequência com que joins multi-tables são executados, etc. Isto deve ajudar os usuários a identificar áreas ou projetos de ta- belas que podiam ser otimizados para executar consultas muito mais eficientes.
• Internacionalização
• Aprimoramentos de usabilidade
• Possibilita especificarlong_query_timecom uma granularidade em microsegundos.
• Ligue o códigomyisampackno servidor assim ele poderá realizar operaçõesPACKeCOMPRESS.
• Adicionar uma cache de chaves temporária duranteINSERT/DELETE/UPDATEpara podermos fazer um recuperação se o índice ficar cheio.
• Se você realizar umALTER TABLEem uma tabela que é ligada simbolicamente a outro disco, crie tabelas tenporárias nes- te disco.
• Implementar um tipoDATE/DATETIMEque trate as informações de fusos horários de forma apropriada e assim lidar com datas em diferentes fusos horários será mais fácil.
• Corrigir o configure para se poder compilar todas as bibliotecas (como noMyISAM) sem threads. • Permitir variáveis SQL emLIMIT, como emLIMIT @a,@b.
• Saída automática domysqlpara um navegador web. • LOCK DATABASES(com diversas opções).
• Muito mais variáveis paraSHOW STATUS. Leitura e atualização de registros. Selects em 1 tabela e select com joins. Nú- mero de tabelas na select. Número de consultasORDER BYeGROUP BY.
• mysqladmin copy database novo-banco_dados; exige que o comandoCOPYseja adicionado aomysqld. • Lista de processos deve mostar o número de consultas/threads.
• SHOW HOSTSpara xibir informações sobre a cache de nome de máquina. • Alterar o nome de tabelas de string vazias paraNULLpara colunas calculadas.
• Não usarItem_copy_stringem valores numéricos para evitar a conversão number->string->number no casos de:SE- LECT COUNT(*)*(id+0) FROM nome_tabela GROUP BY id
• Alterar aquelesALTER TABLEque não abortam clientes que executamINSERT DELAYED.
• Colunas referênciadas em uma cláusulaUPDATEirão conter os valores antigos antes da atualização iniciar. • Novos sistemas operacioais.
• Portar os clientes MySQL para LynxOS.