Skip to:
Content

bbPress.org

Opened 11 months ago

Last modified 7 weeks ago

#3225 new enhancement

Move all data from postmeta into own database tables

Reported by: GDragoN Owned by:
Milestone: Awaiting Review Priority: high
Severity: major Version: trunk
Component: General Keywords:
Cc:

Description

bbPress has a great potential to be a great forum software, but that is not going to happen until bbPress can be scaled to work with large forums, and allow for some more complex features to work without the burden of bad database design.

bbPress stores all the data into the postmeta table that can't be indexed and that can't be used in complex queries without the performance hit. Yes, it works fine for the rather simple queries bbPress has now (well, that is not true completely, there so many reports of imports from other forums failing, or repair operations failing), but if you need to make queries that will get latest posts for a period of time, in specific forums, based on the last activity, and run it in forum with 250.000 or more topics, that can be very slow (query execution can take 5 or more seconds, even on fast servers).

So, I have created the proposal database schema using 8 database tables based on the metadata currently stored in postmeta, with few more columns added, that can be discussed and that should be implemented into the bbPress core. I was thinking about building a plugin for that, but there is no way to easily replace core queries bbPress uses with the plugin, or replace complete import system. Database schema needs to be in the core. Here is the GitHub repository with schema and few for starters queries to load the tables: https://github.com/dev4press/db-updates-for-bbpress.

Change History (3)

#1 @Sceko
11 months ago

I agree with you

#2 @sourfew
11 months ago

I agree

#3 @menathor
7 weeks ago

I think this is essential, especially for large sites. The performance increase will be noticable. WooCommerce are actively working on moving products to a separate table for the same reason.

Note: See TracTickets for help on using tickets.