From cf311b3f7aaad18eb385d27d4df2cafab573845a Mon Sep 17 00:00:00 2001 From: OldHawk Date: Tue, 26 Dec 2017 18:33:22 +0800 Subject: [PATCH] opt(mongo): optimization db index --- .../server/models/topic.server.model.js | 2 +- .../server/models/message.server.model.js | 7 +++- .../server/models/peer.server.model.js | 2 ++ .../server/models/torrent.server.model.js | 33 ++++++++++--------- .../server/models/trace.server.model.js | 2 +- .../users/server/models/user.server.model.js | 12 ++++--- 6 files changed, 35 insertions(+), 23 deletions(-) diff --git a/modules/forums/server/models/topic.server.model.js b/modules/forums/server/models/topic.server.model.js index 7be13e4d..8b785c13 100644 --- a/modules/forums/server/models/topic.server.model.js +++ b/modules/forums/server/models/topic.server.model.js @@ -147,7 +147,7 @@ var TopicSchema = new Schema({ }, {usePushEach: true}); TopicSchema.index({forum: 1, isTop: -1, lastReplyAt: -1, createdAt: -1}); -TopicSchema.index({isGlobal: 1, forum: -1}); +TopicSchema.index({createdAt: -1, isGlobal: 1, forum: -1}); mongoose.model('Topic', TopicSchema); mongoose.model('Attach', AttachSchema); diff --git a/modules/messages/server/models/message.server.model.js b/modules/messages/server/models/message.server.model.js index 94c3c289..d92e0206 100644 --- a/modules/messages/server/models/message.server.model.js +++ b/modules/messages/server/models/message.server.model.js @@ -52,6 +52,11 @@ var MessageSchema = new Schema({ } }, {usePushEach: true}); -MessageSchema.index({type: 1, from_user: 1, to_user: 1, updatedat: -1, createdat: -1}); +//for countUnread +MessageSchema.index({to_user: 1, type: 1, to_status: 1}); +//for countUnread +MessageSchema.index({from_user: 1, type: 1, from_status: 1}); +//for messagebox list +MessageSchema.index({updatedat: -1, createdat: -1, type: 1, from_user: 1, to_user: 1}); mongoose.model('Message', MessageSchema); diff --git a/modules/torrents/server/models/peer.server.model.js b/modules/torrents/server/models/peer.server.model.js index 991f2af3..87a5ace6 100644 --- a/modules/torrents/server/models/peer.server.model.js +++ b/modules/torrents/server/models/peer.server.model.js @@ -148,4 +148,6 @@ PeerSchema.index({torrent: 1, peer_status: 1, last_announce_at: 1, peer_download PeerSchema.index({user: 1, peer_status: 1, last_announce_at: 1, peer_uploaded: 1}); PeerSchema.index({user: 1, peer_status: 1, last_announce_at: 1, peer_downloaded: 1}); +PeerSchema.index({last_announce_at: 1, peer_status: 1, user: 1, peer_uploaded: -1}); + mongoose.model('Peer', PeerSchema); diff --git a/modules/torrents/server/models/torrent.server.model.js b/modules/torrents/server/models/torrent.server.model.js index 973d1e71..c2ba97fb 100644 --- a/modules/torrents/server/models/torrent.server.model.js +++ b/modules/torrents/server/models/torrent.server.model.js @@ -95,6 +95,7 @@ var TorrentSchema = new Schema({ type: String, default: '', trim: true, + unique: true, required: 'info_hash cannot be blank' }, torrent_filename: { @@ -299,13 +300,7 @@ TorrentSchema.methods.globalUpdateMethod = function (cb) { }); }; -TorrentSchema.index({info_hash: 1}); - -TorrentSchema.index({user: -1, createdat: -1}); -TorrentSchema.index({maker: 1, createdat: -1}); -TorrentSchema.index({torrent_tmdb_id: 1, createdat: -1}); -TorrentSchema.index({torrent_recommended: 1, createdat: -1}); -TorrentSchema.index({torrent_sale_status: 1, createdat: -1}); +TorrentSchema.index({info_hash: 'hashed'}); TorrentSchema.index({ torrent_sale_status: 1, @@ -316,27 +311,33 @@ TorrentSchema.index({ user: 1, torrent_recommended: 1, orderedat: -1, - createdat: -1, - '_peers.id': 1 + createdat: -1 }); TorrentSchema.index({ - torrent_status: 1, + orderedat: -1, + createdat: -1, torrent_type: 1, + torrent_status: 1, torrent_vip: 1, torrent_recommended: 1, - orderedat: -1, - createdat: -1, - '_peers.id': 1 }); TorrentSchema.index({ - torrent_status: 1, + orderedat: -1, + createdat: -1, torrent_type: 1, - torrent_vip: 1, + torrent_status: 1, + torrent_recommended: 1 +}); + +TorrentSchema.index({ maker: 1, orderedat: -1, - createdat: -1 + createdat: -1, + torrent_type: 1, + torrent_status: 1, + torrent_vip: 1, }); mongoose.model('Torrent', TorrentSchema); diff --git a/modules/traces/server/models/trace.server.model.js b/modules/traces/server/models/trace.server.model.js index 3327bf18..36e9e134 100644 --- a/modules/traces/server/models/trace.server.model.js +++ b/modules/traces/server/models/trace.server.model.js @@ -22,6 +22,6 @@ var TraceSchema = new Schema({ }, {usePushEach: true}); TraceSchema.index({createdat: -1}); -TraceSchema.index({'content.action': -1}); +TraceSchema.index({'content.action': 1, createdat: -1}); mongoose.model('Trace', TraceSchema); diff --git a/modules/users/server/models/user.server.model.js b/modules/users/server/models/user.server.model.js index 1febaef4..fde96e52 100644 --- a/modules/users/server/models/user.server.model.js +++ b/modules/users/server/models/user.server.model.js @@ -101,6 +101,7 @@ var UserSchema = new Schema({ }, passkey: { type: String, + unique: true, default: '' }, salt: { @@ -644,10 +645,13 @@ UserSchema.statics.seed = seed; UserSchema.index({passkey: 1}); UserSchema.index({email: 1}); UserSchema.index({uptotal: 1}); -UserSchema.index({status: 1, uploaded: -1, downloaded: -1, ratio: -1, score: -1}); -UserSchema.index({status: 1, downloaded: -1, uploaded: -1, ratio: -1, score: -1}); -UserSchema.index({status: 1, score: -1, uploaded: -1, downloaded: -1, ratio: -1}); -UserSchema.index({status: 1, ratio: -1, uploaded: -1, downloaded: -1, score: -1}); + +//for rank list +UserSchema.index({uploaded: -1, downloaded: -1, ratio: -1, score: -1, status: 1}); + +UserSchema.index({created: -1, status: 1}); +UserSchema.index({created: -1, status: 1, roles: 1, isVip: 1}); + UserSchema.index({isVip: 1, username: 1, displayName: 1, email: 1, created: -1}); UserSchema.index({roles: 1, username: 1, displayName: 1, email: 1, created: -1}); UserSchema.index({status: 1, username: 1, displayName: 1, email: 1, created: -1});