24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-30 23:02:00 +02:00

Fix pubsub_state mnesia table definition

Partially bound lookups keys only works efficiently if the table
type if ordered_set.
If the table is a set, then it is implemented as a hashtable,
and if the lookup key isn't fully bound an entire table scan
is neccesarly.
This commit is contained in:
Pablo Polvorin 2012-12-11 17:11:53 -03:00
parent 362d7f617d
commit 3e6b88cbc3
2 changed files with 4 additions and 1 deletions

View File

@ -726,6 +726,7 @@ update_state_database(_Host, _ServerHost) ->
{atomic, ok} = mnesia:delete_table(pubsub_state),
{atomic, ok} = mnesia:create_table(pubsub_state,
[{disc_copies, [node()]},
{type, ordered_set},
{attributes,
record_info(fields,
pubsub_state)}]),
@ -756,6 +757,7 @@ update_state_database(_Host, _ServerHost) ->
{atomic, ok} = mnesia:delete_table(pubsub_state),
{atomic, ok} = mnesia:create_table(pubsub_state,
[{disc_copies, [node()]},
{type, ordered_set},
{attributes,
record_info(fields,
pubsub_state)}]),

View File

@ -69,7 +69,8 @@
init(_Host, _ServerHost, _Options) ->
pubsub_subscription:init(),
mnesia:create_table(pubsub_state,
[{disc_copies, [node()]}, {index, [nodeidx]},
[{disc_copies, [node()]}, {index, [nodeidx]},
{type, ordered_set},
{attributes, record_info(fields, pubsub_state)}]),
mnesia:create_table(pubsub_item,
[{disc_only_copies, [node()]}, {index, [nodeidx]},