2011-03-30 3 views
3

mon site a besoin de stocker l'ip et l'horodatage de chaque visite sur mysql. Je suis préoccupé que très rapidement, je vais avoir 1e6 lignes dans ma base de données. Quelle est la meilleure façon de compresser une date sur mysql ou java?quel est le meilleur moyen de compresser une date?

est-ce que mysql compresse déjà les dates? idéalement, je voudrais décompresser les valeurs de date assez rapidement pour générer des rapports.

Mise à jour: désolé, je voulais dire un mil par jour. mais je suppose que c'est encore minuscule.

+2

La taille de la date est le moindre de vos problèmes de stockage avec cette quantité d'enregistrements par jour. – Wes

Répondre

2

Je ne m'inquiéterais pas trop à ce sujet. Dans tous les cas, MySQL utilise un format assez compressé (3 octets) de toute façon selon this page:

DATE: A three-byte integer packed as DD + MM×32 + YYYY×16×32 

En d'autres termes, au niveau de bits (sur la plage 1000-01-01 thru 9999-12-31):

00000yyy yyyyyyym mmmddddd 
+0

1 million de lignes = 3MB environ (fragmentation des données, etc.) –

+0

@Yanick - ajouter une valeur supplémentaire de 4 octets pour chaque adresse IP. Mais oui, c'est une quantité minuscule de stockage selon les normes d'aujourd'hui. –

1

Utilisez le type datetime MySQL intégré. Un million de lignes n'est pas beaucoup. Mate, un million de lignes est une base de données minuscule

+0

1E6 est 1x10^6, ou 100 000 ... –

+5

10^6 = 1 million. – yan

+0

ops, je veux dire un mil par jour, mais je reçois l'idée, merci – somid3

1

A mysql l'horodatage serait seulement de 4 octets. Un entier représentant l'horodatage serait le même. Il serait efficace de l'enregistrer en tant que type mysql puisque vous seriez en mesure d'indexer et/ou d'interroger en fonction de cette colonne de manière efficace.

Toute forme "compressée" qui n'est pas un type mysql serait inefficace à interroger.

Questions connexes