• Nenhum resultado encontrado

Vis˜ ao Geral do Sistema de Gerenciamento de Banco de Dados MySQLDados MySQL

No documento 1 Informa¸c˜ oes Gerais . . . . 1 (páginas 38-46)

1 Informa¸c˜ oes Gerais

1.2 Vis˜ ao Geral do Sistema de Gerenciamento de Banco de Dados MySQLDados MySQL

MySQL, o mais popular sistema de gerenciamento de banco de dados SQL Open Source, ´e desenvolvido, distribu´ido e tem suporte daMySQL AB. AMySQL AB´e uma empresa comercial, fundada pelos desenvolvedores do MySQL, cujos neg´ocios ´e fornecer servi¸cos relacionados ao sistema de gerenciamento de banco de dados MySQL. Veja Se¸c˜ao 1.3 [What is MySQL AB], P´agina 12.

O web site doMySQL (http://www.mysql.com/) fornece informa¸c˜oes mais recentes sobre e programa MySQLe a MySQL AB.

O MySQL ´e um sistema de gerenciamento de bancos de dados.

Um banco de dados ´e uma cole¸c˜ao de dados estruturados. Ele pode ser qual-quer coisa desde uma simples lista de compras a uma galeria de imagens ou a grande quantidade de informa¸c˜ao da sua rede coorporativa. Para adicionar, acessar, e processar dados armazenados em um banco de dados de um com-putador, vocˆe necessita de um sistema de gerenciamento de bancos de dados como o Servidor MySQL. Como os computadores s˜ao muito bons em lidar com grandes quantidades de dados, o gerenciamento de bancos de dados funciona como a engrenagem central na computa¸c˜ao, seja como utilit´arios independentes ou como partes de outras aplica¸c˜oes.

O MySQL ´e um sistema de gerenciamento de bancos de dados relacional.

Um banco de dados relacional armazena dados em tabelas separadas em vez de colocar todos os dados um s´o local. Isso proporciona velocidade e flexibil-idade. A parte SQL do “MySQL” atenda pela “Structured Query Language -Linguagem Estrutural de Consultas”. SQL ´e linguagem padr˜ao mais comum usada para acessar banco de dados e ´e definida pelo Padr˜ao ANSI/ISO SQL. (O padr˜ao SQL est´a vem evoluindo desde 1986 e existem diversas vers˜oes. Neste manual, ”SQL-92” se refere ao padr˜ao liberado em 1992, ”SQL-99” se refere ao padr˜ao liberado em 1999, e ”SQL:2003” se refere a vers˜ao do que esperamos que seja liberado no meio de 2003. N´os usamos o termo ”o padr~ao SQL” indicando a vers˜ao atual do Padr˜ao SQL em qualquer momento).

O ´e MySQL um softwareOpen Source.

Open Source significa que ´e poss´ivel para qualquer um usar e modificar o pro-grama. Qualquer pessoa pode fazer download do MySQL pela Internet e us´a-lo sem pagar nada. Se vocˆe quiser, vocˆe pode estudar o c´odigo fonte e alter´a-lo para adequ´a-lo `as suas necessidades. OMySQL usa aGPL(GNU General Public License - Licen¸ca P´ublica Geral GNU) http://www.fsf.org/licenses, para definir o que vocˆe pode e n˜ao pode fazer com o software em diferentes situa¸c˜oes. Se vocˆe sentir desconforto com a GPL ou precisar embutir o MySQL em uma aplica¸c˜ao comercial vocˆe pode adquirir a vers˜ao comercial licenciada conosco. Veja Se¸c˜ao 1.4.3 [Licen¸cas MySQL], P´agina 18.

Por que usar o Banco de Dados MySQL?

Oservidor de banco de dados MySQL´e extremamente r´apido, confi´avel, e f´acil de usar. Se isto ´e o que vocˆe est´a procurando, vocˆe deveria experiment´a-lo. O Servidor MySQL tamb´em tem um conjunto de recursos muito pr´aticos desen-volvidos com a coopera¸c˜ao de nossos usu´arios. Vocˆe pode encontrar

compara-tivos de performance do Servidor MySQL com outros gerenciadores de bancos de dados na nossa p´agina de benchmark Veja Se¸c˜ao 5.1.4 [MySQL Benchmarks], P´agina 422.

O Servidor MySQL foi desenvolvido originalmente para lidar com bancos de dados muito grandes de maneira muito mais r´apida que as solu¸c˜oes existentes e tem sido usado em ambientes de produ¸c˜ao de alta demanda por diversos anos de maneira bem sucedida. Apesar de estar em constante desenvolvimento, o Servidor MySQL oferece hoje um rico e proveitoso conjunto de fun¸c˜oes. A conectividade, velocidade, e seguran¸ca fazem com que o MySQL seja altamente adapt´avel para acessar bancos de dados na Internet.

As caracter´isticas t´ecnicas do MySQL

Para informa¸c˜oes t´ecnicas avan¸cadas, veja Cap´“ptexi tulo 6 [Reference], P´agina 469. O Programa de Banco de Dados MySQL ´e um sistema cliente/servidor que consiste de um servidor SQL multi-tarefa que suporta acessos diferentes, diversos programas clientes e bibliotecas, ferramentas administrativas e diversas interfaces de programa¸c˜ao (API’s).

Tamb´em concedemos o Servidor MySQLcomo uma biblioteca multi-tarefa que vocˆe pode ligar `a sua aplica¸c˜ao para chegar a um produto mais r´apido, menor e mais f´acilmente gerenci´avel.

MySQL tem muitos softwares de colaboradores dispon´ivel.

E bem prov´avel que sua aplica¸c˜ao ou linguagem favorita j´a suporte o´ Servidor de Banco de Dados MySQL.

A pron´uncia oficial do MySQL ´e “Mai Ess Que Ell” (e n˜ao MAI-SEQUEL). Mas n´os n˜ao ligamos se vocˆe pronunciar MAI-SEQUEL ou de outra forma qualquer.

1.2.1 Hist´ oria do MySQL

Quando come¸camos, t´inhamos a inten¸c˜ao de usar o mSQL para conectar `as nossas tabelas utilizando nossas r´apidas rotinas de baixo n´ivel (ISAM). Entretanto, depois de alguns testes, chegamos a conclus˜ao que o mSQL n˜ao era r´apido e nem flex´ivel o suficiente para nossas necessidades. Isto resultou em uma nova interface SQL para nosso banco de dados, mas com praticamente a mesma Interface API domSQL. Esta API foi escolhida para facilitar a portabilidade para c´odigos de terceiros que era escrito para uso commSQL para ser portado facilmente para uso com o MySQL.

A deriva¸c˜ao do nome MySQL n˜ao ´e bem definida. Nosso diret´orio base e um grande n´umero de nossas bibliotecas e ferramentas sempre tiveram o prefixo “my” por pelo menos 10 anos.

A filha de Monty tamb´em ganhou o nome My. Qual das duas originou o nome do MySQL continua sendo um mist´erio, mesmo para n´os.

O nome do golfinho do MySQL (nosso logo) ´e Sakila. Sakila foi escolhido pelos fun-dadores da MySQL AB de uma enorme lista de nomes sugeridos pelos usu´arios em nosso concurso "Name the Dolphin". O nome vencedor foi enviado por Ambrose Twebaze, um desenvolvedor de programas open source de Swaziland, Africa. De acordo com Ambrose, o nome Sakila tem as suas ra´izes em SiSwati, a l´ingua local de Swaziland. Sakila ´e tamb´em o nome de uma cidade em Arusha, Tanzania, pr´oxima ao pa´is de or´igem de Ambrose, Uganda.

1.2.2 As Principais Caracter´isticas do MySQL

A seguinte lista descreve algumas das caracter´isticas mais importantes doProgrma de Banco de Dados MySQL. Veja Se¸c˜ao 1.5.1 [MySQL 4.0 Nutshell], P´agina 22.

Portabilidade e

Escrito em C e C++.

Testado com um amplo faixa de compiladores diferentes.

Funciona em diversas plataformas. Veja Se¸c˜ao 2.2.3 [Quais SO], P´agina 78.

Utiliza o GNU Automake, Autoconf, e Libtool para portabilidade.

APIs para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby e Tcl est˜ao dispon´iveis. Veja Cap´“ptexi tulo 12 [Clients], P´agina 772.

Suporte total a multi-threads usando threads diretamente no kernel. Isto significa que se pode facilmente usar m´ultiplas CPUs, se dispon´ivel.

Fornece mecanismos de armazenamento transacional e n˜ao transacional.

Tabelas em disco (MyISAM) baseadas em ´arvores-B extremamente r´apidas com compress˜ao de ´indices.

E relativamente f´acil se adicionar outro mecanismo de armazenamento.´ Isto ´e ´util se vocˆe quiser adicionar uma interface SQL a um banco de dados caseiro.

Um sistema de aloca¸c˜ao de mem´oria muito r´apido e baseado em pro-cesso(thread).

Joins muito r´apidas usando uma multi-join de leitura ´unica otimizada.

Tabelas hash em mem´oria que s˜ao usadas como tabelas tempor´arias.

Fun¸c˜oes SQL s˜ao implementadas por meio de uma biblioteca de classes altamente otimizada e com o m´aximo de performance. Geralmente n˜ao h´a nenhuma aloca¸c˜ao de mem´oria depois da inicializa¸c˜ao da pesquisa.

O c´odigo do MySQL foi testado com Purify (um detector comercial de falhas de mem´oria) e tamb´em com o Valgrind, uma ferramenta GPL (http://developer.kde.org/~sewardj/).

Dispon´ivel como vers˜ao cliente/servidor ou embutida(ligada).

Tipos de Coluna

Aceita diversos tipos de campos: tipos inteiros de 1, 2, 3, 4 e 8 bytes com e sem sinal,FLOAT, DOUBLE, CHAR, VARCHAR,TEXT,BLOB,DATE,TIME, DATETIME,TIMESTAMP,YEAR,SETeENUM. Veja Se¸c˜ao 6.2 [Tipos de Coluna], P´agina 482.

Registros de tamanhos fixos ou vari´aveis.

Comandos e Fun¸c˜oes

Completo suporte a operadores e fun¸c˜oes nas partes SELECT e WHERE das consultas. Por exemplo:

mysql> SELECT CONCAT(first_name, " ", last_name) -> FROM nome_tbl

-> WHERE income/dependents > 10000 AND age > 30;

Suporte pleno `as cl´ausulas SQLGROUP BYeORDER BY. Suporte para fun¸c˜oes de agrupamento (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX()e MIN()).

Suporte para LEFT OUTER JOINe RIGHT OUTER JOIN com as sintaxes SQL e ODBC.

Alias em tabelas e colunas s˜ao dispon´iveis como definidos no padr˜ao SQL92.

DELETE, INSERT, REPLACE, e UPDATE retornam o n´umero de linhas que foram alteradas (afetadas). ´E poss´ivel retornar o n´umero de linhas com padr˜ao coincidentes configurando um parˆametro quando estiver conectando ao servidor.

O comando espec´ifico do MySQL SHOW pode ser usado para devolver in-forma¸c˜oes sobre bancos de dados, tabelas e ´indices. O comando EXPLAIN pode ser usado para determinar como o otimizador resolve a consulta.

Nomes de fun¸c˜oes n˜ao conflitam com nomes de tabelas ou colunas. Por exemplo,ABS´e um nome de campo v´alido. A ´unica restri¸c˜ao ´e que para uma chamada de fun¸c˜ao, espa¸cos n˜ao s˜ao permitidos entre o nome da fun¸c˜ao e o ‘(’ que o segue. Veja Se¸c˜ao 6.1.7 [Palavras reservadas], P´agina 479.

Vocˆe pode misturar tabelas de bancos de dados diferentes na mesma pesquisa (como na vers˜ao 3.22).

Seguran¸ca

Um sistema de privil´egios e senhas que ´e muito flex´ivel, seguro e que per-mite verifica¸c˜ao baseada em esta¸c˜oes/m´aquinas. Senhas s˜ao seguras porque todo o tr´afico de senhas ´e criptografado quando vocˆe se conecta ao servidor.

Escalabilidade e limites

Lida com bancos de dados enormes. Usamos oServidor MySQLcom bancos de dados que cont´em 50.000.000 registros e sabemos de usu´arios que usam o Servidor MySQL com 60.000 tabelas e aproximadamente 5.000.000.000 de linhas.

S˜ao permitidos at´e 32 ´indices por tabela. Cada ´indice pode ser composto de 1 a 16 colunas ou partes de colunas. O tamanho m´aximo do ´indice ´e de 500 bytes (isto pode ser alterado na compila¸c˜ao do MySQL). Um ´indice pode usar o prefixo de campo com um tipoCHAR ou VARCHAR.

Conectividade

Os clientes podem se conectar ao servidor MySQL usando sockets TCP/IP, em qualquer plataforma. No sistema Windows na fam´ilia NT (NT, 2000 ou XP), os clientes podem se conectar usando named pipes. No sistema Unix, os clientes podem se conectar usando arquivos sockets.

A interface Connector/ODBC fornece ao MySQL suporte a progras clientes que usam conex˜ao ODBC (Open-DataBase-Connectivity). Por exemplo, vocˆe pode usar o MS Access para conectar ao seu servidor MySQL. Os clientes podem ser executados no Windows ou Unix. O fonte do Connec-tor/ODBC est´a dispon´ivel. Todas as fun¸c˜oes ODBC s˜ao suportadas, assim como muitas outras.

Veja Se¸c˜ao 12.2 [ODBC], P´agina 866.

Localiza¸c˜ao

O servidor pode apresentar mensagem de erros aos clientes em v´arias l´inguas. Veja Se¸c˜ao 4.7.2 [Languages], P´agina 328.

Suporte total para v´arios conjuntos de caracteres, que incluem ISO-8859-1 (Latin1), big5, ujis e mais. Por exemplo, os caracteres Escandinavos ‘^a’,

‘¨a’, ‘¨o’ s˜ao permitidos em nomes de tabelas e colunas.

Todos os dados s˜ao armazenados no conjunto de caracteres escolhido. To-das as compara¸c˜oes em colunas de seq¨uˆencias caso-insensitivo.

A ordena¸c˜ao ´e feita de acordo com o conjunto de caracteres escolhido (o modo sueco por padr˜ao). ´E poss´ivel alterar isso quando o servidor MySQL

´e iniciado. Para ver um exemplo de v´arias ordena¸c˜oes avan¸cadas, procure pelo c´odigo de ordena¸c˜ao Tcheca. OServidor MySQLsuporta diversos con-juntos de caracteres que podem ser especificados em tempo de compila¸c˜ao e execu¸c˜ao.

Clientes e Ferramentas

O servidor MySQL foi constru´ido com suporte para instru¸c˜oes SQL que verificam, otimizam e reparam tabelas. Estas instru¸c˜oes est˜ao dispon´iveis a partir da linha de comando por meio do clientemyisamcheck, O MySQL inclui tamb´em omyisamchk, um utilit´ario muito r´apido para realizar estas opera¸c˜oes em tabelas MyISAM. Veja Cap´“ptexi tulo 4 [MySQL Database Administration], P´agina 208.

Todos os programasMySQLpodem ser chamados com as op¸c˜oes--helpou -?para obter ajuda online.

1.2.3 Estabilidade do MySQL

Esta se¸c˜ao discute as quest˜oes “Qu˜ao est´avel ´e o MySQL?” e “Posso depender do MySQL neste projeto?”. Tentaremos deixar claro estes assuntos e responder algumas das quest˜oes mais importantes que dizem respeito a muito de nossos usu´arios. A informa¸c˜ao nesta se¸c˜ao

´e baseada em dados colhidos da lista de discuss˜ao, que ´e muito ativa na identifica¸c˜ao de problemas e assim como nos relatos de tipos de uso.

Originalmente, o c´odigo vem do in´icio dos anos 80, fornecendo um c´odigo est´avel e o formato de tabelas ISAM permanece compat´ivel com vers˜oes anteriores. Na TcX, a predecessora da MySQLAB, oMySQLvem trabalhando sem problemas em nossos projetos desde o meio de 1996.

Quando oPrograma de Banco de Dados MySQL foi disponibilizado para um p´ublico maior, nossos novos usu´arios rapidamente encontraram algumas partes de “c´odigo sem testes”.

Desde ent˜ao, cada distribui¸c˜ao nova teve menos problemas de portabilidade (mesmo com os novos recursos implementados em cada uma destas vers˜oes)

Cada distribui¸c˜ao doServidor MySQLfoi sendo usado, e os problemas tem ocorrido somente quando os usu´arios come¸cam a usar o c´odigo das “´areas cinzentas.” Naturalmente, novos usu´arios n˜ao sabem o que s˜ao as ´areas cinzentas; esta se¸c˜ao tenta indicar aquelas que s˜ao conhecidas atualmente. As descri¸c˜oes lidam com a Vers˜ao 3.23 e 4.0 do Servidor MySQL.

Todos os erros conhecidos e relatados s˜ao corrigidos na ´ultima vers˜ao, com a exce¸c˜ao dos bugs listados na se¸c˜ao de erros, os quais s˜ao relacionados ao desenho. Veja Se¸c˜ao 1.8.6 [Bugs], P´agina 53.

O Servidor MySQL ´e escrito em m´ultiplas camadas com m´odulos independentes. Alguns dos novos m´odulos est˜ao listados abaixo com indica¸c˜oes de qu˜ao bem-testado foi cada um deles.

Replica¸c˜ao — Gamma

Grandes grupos de servidores usando replica¸c˜ao est˜ao em uso, com bom resul-tados. O trabalho no aprimoramento dos recursos de replica¸c˜ao continua no MySQL 4.x.

Tabelas InnoDB— Est´avel (na 3.23, 3.23.49)

O mecanismo de armazenamento transacional InnoDBfoi declarado est´avel na

´arvore do MySQL 3.23, a partir da vers˜ao 3.23.49. InnoDB tem sido usado em sistema de produ¸c˜ao grandes e com carga pesada.

Tabelas BDB— Gamma

O c´odigo do Berkeley DB ´e muito est´avel, mas ainda estamos melhorando a interface do mecanismo de armazenamento transacional do BDB no Servidor MySQL, assim levar´a algum tempo at´e que ele esteja t˜ao bem testado quanto os outro tipos de tabela.

Pesquisas Full-text — Beta

Pesquisa full-text funcionam mas ainda n˜ao s˜ao largamente usadas. Melhora-mentos importantes forma implementados noMySQL 4.0.

MyODBC 3.51 (usa ODBC SDK 3.51) — Est´avel

Em grande uso na produ¸c˜ao. Alguns problemas apresentados parecem ser rela-cionados a aplica¸c˜ao e independente do driver ODBC ou do servidor de banco de dados.

Recupera¸c˜ao autom´atica de tabelasMyISAM— Gamma

Este status se aplica apenas ao novo c´odigo que confere no mecanismo de ar-mazenamentoMyISAMque verifica, na inicializa¸c˜ao, se a tabela foi fechada cor-retamente e executa uma conferˆencia/reparo autom´atico da tabela em caso negativo.

Bulk-insert — Alpha

Novo recurso nas tabelas MyISAMno MySQL4.0 para inser¸c˜oes mais r´apidas de v´arios registros.

Locking — Gamma

Esse m´odulo ´e muito dependente do sistema. Em alguns sistemas existem certos problemas por utilizar o locking padr˜ao do SO (fcntl(). Nestes casos, vocˆe deve executar o mysqld com o parˆametro --skip-external-locking. S˜ao conhecidos alguns problemas ocorridos em alguns sistemas Linux e no SunOS quando utiliza-se sistemas de arquivos montados em NFS.

Clientes que pagam recebem suporte direto e de alta qualidade da MySQL AB. A MySQL AB tamb´em fornece uma lista de discuss˜ao como um recurso da comunidade onde qualquer pessoa pode tirar suas d´uvidas.

Erros s˜ao normalmente corrigidos com um patch; para erros s´erios, normalmente ´e lan¸cada uma nova distribui¸c˜ao.

1.2.4 Qual o Tamanho Que as Tabelas do MySQL Podem Ter?

A Vers˜ao 3.22 do MySQL tem suporte para tabelas com limite de tamanho at´e 4G. Com o novo MyISAM no MySQL vers˜ao 3.23 o tamanho m´aximo foi expandido at´e 8 milh˜oes de terabytes (2^63 bytes). Com este tamanho de tabela maior permitido, o tamanho m´aximo efetivo das tabelas para o banco de dados MySQL ´e normalmente limitado pelas restri¸c˜oes do sistema operacional quanto ao tamanho dos arquivos, n˜ao mais por limites internos do MySQL.

A seguinte tabela lista alguns exemplos do limite do tamanho de arquivos do sistema op-eracional:

Sistema Operacional Limite do tamanho do arquivo

Linux-Intel 32 bit 2G, muito mais usando LFS

Linux-Alpha 8T (?)

Solaris 2.5.1 2G (´E poss´ivel 4GB com patch)

Solaris 2.6 4G (pode ser alterado com parˆametro)

Solaris 2.7 Intel 4G

Solaris 2.7 ULTRA-SPARC 8T (?)

No Linux 2.2 vocˆe pode ter tabelas maiores que 2 GB usando o patch LFS para o sistema de arquivos ext2. No Linux 2.4 j´a existem patches para o sistema de arquivos ReiserFS para ter suporte a arquivos maiores. A maioria das distribui¸c˜oes atuais s˜ao baseadas no kernel 2.4 e j´a incluem todos os patches Suporte a Arquivos Grandes (Large File Support - LFS) exigidos. No entanto, o tamanho m´aximo dispon´ivel ainda depende de diversos fatores, sendo um deles o sistema de arquivos usado para armazenar as tabelas MySQL.

Para um vis˜ao mais detalhada sobre LFS no Linux, dˆe uma olha na p´agina Andreas Jaeger’s

"Large File Support in Linux"em http://www.suse.de/~aj/linux_lfs.html.

Por padr˜ao, o MySQL cria tabelas MyISAM com uma estrutura interna que permite um tamanho m´aximo em torno de 4G. Vocˆe pode verificar o tamanho m´aximo da tabela com o comando SHOW TABLE STATUS ou com o myisamchk -dv nome_tabela Veja Se¸c˜ao 4.6.8 [SHOW], P´agina 303.

Se vocˆe precisa de tabelas maiores que 4G (e seu sistema operacional suporta arquivos grandes), a instru¸c˜ao CREATE TABLE permite as op¸c˜oes AVG_ROW_LENGHT e MAX_ROWS. Use estas op¸c˜oes para criar uma tabela que possa ter mais de 4GB. Veja Se¸c˜ao 6.5.3 [CREATE TABLE], P´agina 597. Vocˆe pode tamb´em alterar isso mais tarde com ALTER TABLE. Veja Se¸c˜ao 6.5.4 [ALTER TABLE], P´agina 607.

Outros modos se contornar o limite do tamanho do arquivo das tabelas MyISAM s˜ao os seguintes:

Se sua tabela grande ser´a somente leitura, vocˆe poder´a usar o myisampack para unir e comprimir v´arias tabelas em uma. mysisampacknormalmente comprime uma tabela em pelo menos 50%, portanto vocˆe pode obter, com isso, tabelas muito maiores. Veja Se¸c˜ao 4.8.4 [myisampack], P´agina 337.

Outra op¸c˜ao para contornar o limite de tamanho de arquivos do sistema operacional para arquivos de dadosMyISAMusando a op¸c˜aoRAID. Veja Se¸c˜ao 6.5.3 [CREATE TABLE], P´agina 597.

O MySQL inclu´i uma biblioteca MERGE que permite acessar uma cole¸c˜ao de tabelas idˆenticas como se fosse apenas uma. Veja Se¸c˜ao 7.2 [MERGE], P´agina 637.

1.2.5 Compatibilidade Com o Ano 2000 (Y2K)

OServidor MySQL n˜ao apresenta nenhum problema com o ano 2000 (Y2K compat´ivel)

O Servidor MySQL usa fun¸c˜oes de tempo Unix que tratam datas at´e o ano2037 para valores TIMESTAMP; para valoresDATE e DATETIME, datas at´e o ano 9999 s˜ao aceitas.

Todas as fun¸c˜oes de data do MySQL est˜ao no arquivo ‘sql/time.cc’ e codificadas com muito cuidado para ser compat´ivel com o ano 2000.

No MySQLvers˜ao 3.22 e posterior, o novo tipo de campoYEARpode armazenar anos0e 1901 at´e2155em 1 byte e mostr´a-lo usando 2 ou 4 d´igitos. Todos os anos de 2 d´igitos s˜ao considerados estar na faixa de1970at´e2069; o que significa que se vocˆe armazenar 01 em uma coluna YEAR, OServidor MySQL o tratar´a como 2001.

O seguinte demonstra¸c˜ao simples ilustra que o MySQL Server n˜ao tem nenhum problema com datas at´e depois do ano 2030:

mysql> DROP TABLE IF EXISTS y2k;

Query OK, 0 rows affected (0.01 sec) mysql> CREATE TABLE y2k (date DATE,

-> date_time DATETIME,

-> time_stamp TIMESTAMP);

Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO y2k VALUES

-> ("1998-12-31","1998-12-31 23:59:59",19981231235959), -> ("1999-01-01","1999-01-01 00:00:00",19990101000000), -> ("1999-09-09","1999-09-09 23:59:59",19990909235959), -> ("2000-01-01","2000-01-01 00:00:00",20000101000000), -> ("2000-02-28","2000-02-28 00:00:00",20000228000000), -> ("2000-02-29","2000-02-29 00:00:00",20000229000000), -> ("2000-03-01","2000-03-01 00:00:00",20000301000000), -> ("2000-12-31","2000-12-31 23:59:59",20001231235959), -> ("2001-01-01","2001-01-01 00:00:00",20010101000000), -> ("2004-12-31","2004-12-31 23:59:59",20041231235959), -> ("2005-01-01","2005-01-01 00:00:00",20050101000000), -> ("2030-01-01","2030-01-01 00:00:00",20300101000000), -> ("2050-01-01","2050-01-01 00:00:00",20500101000000);

Query OK, 13 rows affected (0.01 sec) Records: 13 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM y2k;

+---+---+---+

| date | date_time | time_stamp |

| date | date_time | time_stamp |

No documento 1 Informa¸c˜ oes Gerais . . . . 1 (páginas 38-46)