Patryk Pomykalski
c41e9d970a
Optimize queries and indexes on posts table (#13217)
* Optimize queries and indexes on posts table
Added RootId column to two indexes. Query in getParentPosts split into
two queries - for big channels can be ~1000x times faster in MySQL, but
a bit slower in PostgreSQL.
Rewritten query in GetPostsSince for MySQL - around 20% faster.
Benchmark results (/1 - 140k posts in channel, /2 - 800 posts):
benchmark old ns/op new ns/op delta
BenchmarkPosts/postgres/GetFlaggedPostsForTeam/1-16 12068006 12130615 +0.52%
BenchmarkPosts/postgres/GetFlaggedPostsForChannel/1-16 7334992 7388359 +0.73%
BenchmarkPosts/postgres/GetPosts(skipThreads=true)/1-16 1845547 1979362 +7.25%
BenchmarkPosts/postgres/GetPosts(skipThreads=false)/1-16 2260061 2595112 +14.82%
BenchmarkPosts/postgres/GetPostsSince(skipThreads=true)/1-16 38510212 40625368 +5.49%
BenchmarkPosts/postgres/GetPostsSince(skipThreads=false)/1-16 32389821 32581044 +0.59%
BenchmarkPosts/postgres/GetFlaggedPostsForTeam/2-16 1604215 1584941 -1.20%
BenchmarkPosts/postgres/GetFlaggedPostsForChannel/2-16 1278623 1277473 -0.09%
BenchmarkPosts/postgres/GetPosts(skipThreads=true)/2-16 1921049 1984581 +3.31%
BenchmarkPosts/postgres/GetPosts(skipThreads=false)/2-16 3478147 3000086 -13.74%
BenchmarkPosts/postgres/GetPostsSince(skipThreads=true)/2-16 4813332 5198276 +8.00%
BenchmarkPosts/postgres/GetPostsSince(skipThreads=false)/2-16 3475847 3816201 +9.79%
BenchmarkPosts/mysql/GetFlaggedPostsForTeam/1-16 9674132 9708361 +0.35%
BenchmarkPosts/mysql/GetFlaggedPostsForChannel/1-16 5780763 5818874 +0.66%
BenchmarkPosts/mysql/GetPosts(skipThreads=true)/1-16 2261194 2268826 +0.34%
BenchmarkPosts/mysql/GetPosts(skipThreads=false)/1-16 2371804023 3184120 -99.87%
BenchmarkPosts/mysql/GetPostsSince(skipThreads=true)/1-16 35552813 27709811 -22.06%
BenchmarkPosts/mysql/GetPostsSince(skipThreads=false)/1-16 28758400 22622865 -21.33%
BenchmarkPosts/mysql/GetFlaggedPostsForTeam/2-16 1174064 1205933 +2.71%
BenchmarkPosts/mysql/GetFlaggedPostsForChannel/2-16 1007026 1091551 +8.39%
BenchmarkPosts/mysql/GetPosts(skipThreads=true)/2-16 2274397 2408730 +5.91%
BenchmarkPosts/mysql/GetPosts(skipThreads=false)/2-16 7454395 2542741 -65.89%
BenchmarkPosts/mysql/GetPostsSince(skipThreads=true)/2-16 8879200 6843435 -22.93%
BenchmarkPosts/mysql/GetPostsSince(skipThreads=false)/2-16 6293932 5373276 -14.63%
* old version of getParentsPosts for PostgreSQL
because new version using two queries is around 15% slower.
* review fixes
* revert index changes
2020-01-10 10:26:44 +05:30
..
2019-11-29 12:59:40 +01:00
2019-12-20 15:37:01 +00:00
2019-11-29 12:59:40 +01:00
2019-12-29 15:30:18 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-12-12 23:13:33 +05:30
2020-01-09 22:04:30 +05:30
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2020-01-07 10:47:03 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2020-01-09 09:57:28 +01:00
2019-11-29 12:59:40 +01:00
2019-12-18 08:54:09 -05:00
2019-11-29 12:59:40 +01:00
2019-12-22 12:35:31 +01:00
2019-12-04 16:56:08 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-12-03 10:46:15 +01:00
2019-11-29 12:59:40 +01:00
2020-01-10 10:26:44 +05:30
2019-12-04 16:49:06 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-12-22 12:35:31 +01:00
2020-01-07 10:47:03 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2020-01-07 10:47:03 +01:00
2019-11-29 12:59:40 +01:00
2019-12-20 13:51:54 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-12-30 09:33:27 -08:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2020-01-09 09:57:28 +01:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00
2020-01-09 07:44:01 -08:00
2020-01-09 07:44:01 -08:00
2019-11-29 12:59:40 +01:00
2019-11-29 12:59:40 +01:00