264 karma · joined March 25, 2014
ants@cybertec.at
Useful to have in a CICD pipeline so you always have an up-to-date schema diagram available.
The actual case came to my attention because an ORM insisted on generating the count(uuid) variant and I thought it peculiar that the performance difference was so large. But silly ORMs aside, the same problem will happen on any index only range scan over an index that has uuid in it. For a more realistic case, a `count(*) where somecol = 'value'` with a `(somecol, uuid)` index will hit the same problem. I thought the rather hidden single entry visibility map buffer reference cache was an interesting example where random ordering can cause performance problems.
I think a better fix lies in the direction of making queries more of a first class object with options to nail down plans, add custom logic to pick plans dependent on parameter values, etc.
My issues with it are more about inaccurate placement causing hot and cold spots and if you move a pot it can triggers cookware detection, which then clicks different coils on and off for 5-10s before it is satisfied with the new configuration. Both of those issues are probably exacerbated by the "FlexInduction" system that promises one large automatic cook area.
I'm hoping that power electronics development for electric cars creates some innovation in this area, but it's really hard to tell because there are no useful review sites and there aren't any places that let you take a cooktop for a testdrive.
[1] https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f...
For saving money on heating the first step should be to waste less heat rather than making the wasted heat cheaper.
From what I can tell it comes down to execution engine differences. TimeScale, even with compressed tables, uses a row by row execution engine architecturally resembling IE6 era JS engines. ClickHouse uses a batched and vectorized execution engine utilizing SIMD. Difference is one to two orders of magnitude of throughput in terms raw number of rows per core pushed through the execution engine.
Postgres/TimeScale could certainly also implement a similar model of execution, but to call it an undertaking would be an understatement considering the breadth and extensibility of features that the execution engine would need to support. To my knowledge no one is seriously working on this outside of limited capability hacks like vops or PG-Strom extensions.