Project

General

Profile

Actions

Task #88

closed

Changer la méthode de récupération des messages par page

Added by Greg Burri about 16 years ago. Updated about 16 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Serveur
Target version:
Start date:
10/07/2008
Due date:
% Done:

100%

Estimated time:

Description

Au lieu d'utiliser une table de type "ordered_set" avec les fonctions "mnesia:last" et "mnesia:prev" plutôt supposé que :
  • Les ids sont contigüe. Ce n'est pas le cas actuellement (suite à un bug), il faut combler les trous avec par exemple des messages du sys à la con genre "comblage", ne pas oublier d'ajouter un statut au message pour dire qu'il est supprimé !
  • On ne peut pas effacer de messages (seulement via un statut)

La récupération se faire simplement en regardant le nombre de tuples dans la table : mnesia:table_info(minichat, size).

Quelques pistes :

timer:tc(mnesia, transaction, [fun () -> qlc:e(qlc:sort(qlc:q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.id > 400, M#minichat.id < 410]))) end]).
: ~ 90ms 

timer:tc(euphorik_bd, messages, [10])
: ~ 0.3ms

timer:tc(mnesia, transaction, [fun () -> qlc:e(qlc:sort(qlc:q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.id =:= 400]))) end]).
: ~ 20ms

timer:tc(mnesia, dirty_read, [{minichat, 450}]).
: ~ 0 .02ms

timer:tc(mnesia, transaction, [fun() -> mnesia:read({minichat, 450}) end]).
: ~ 0.1ms

timer:tc(mnesia, transaction, [fun() -> lists:map(fun(Id) -> mnesia:read({minichat, Id + 400})end, lists:seq(1, 10)) end]).
: ~ 0.6ms

La dernière étant la meilleure.

Actions #1

Updated by Greg Burri about 16 years ago

  • Category set to Serveur
  • Status changed from New to Assigned
  • Assignee set to Greg Burri
  • Target version set to 1.1.3
Actions #2

Updated by Greg Burri about 16 years ago

  • % Done changed from 0 to 80
Actions #3

Updated by Greg Burri about 16 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 80 to 100
Actions

Also available in: Atom PDF