News for hackers. Stuff that matters.
Re:Why we're ending support for MySQL by dspillett on Wednesday July 03, 2019 @12:41PM (#20345999)
> > We can't support nested groups with MySQL in a performant way

> All they had to do was implement a nested set pattern for their groups

Or an association matrix.

Though if their concern is performance and they are using recursive CTEs in postgres, they may have hold of the wrong end of the stick.

Because CTEs are an optimisation fence for predicate push-down in postgres they can sometimes result in much more expensive query plans than in other DB engines (for instance, MS SQL Server), resulting in excess index/table scanning. This makes them far more a code convenience feature rather than a performance one (they might improve the performance of your coders by making maintenance easier, but might not improve the performance of your system in action).

> > MySQL doesn't support partial indexes

> This is true, but is it really a show stopper?

No, but yes. On their own systems it isn't, as they don't use mySQL. On small self-installs it isn't as they are unlikely to have enough data for it to make a measurable difference. Larger self-installs can just throw hardware at the problem... But supporting a backend that doesn't have them, when they find them useful in their own large installs, means either doing without across the board or needing to maintain two code paths which means more work and more bugs.

> > As a side note – we don't use MySQL ourselves

> I think this is the real reason

I would agree there, though I'd not go as far as to suggest a lack of talent.

The fact that their dev teams and their own production environments don't routinely use MySQL means that they are less likely to hit specific issues that they code has with that back-end during early dev, instead catching them in later QA when fixes are more expensive to implement or worse not catching them at all until release.

Furthermore, supporting mySQL does not just mean supporting the latest version: 8.0 may be over a year old now but that is not nearly long enough for older releases to have been replaced globally especially as 5.7 is marked as officially supported up to 2023. This will be why recursive queries are an issue: mySQL prior to 8.x does not support them, all supported versions of postgres do.

> I think this is the real reason

A cynic (who? me?) might also suggest that an extra reason factoring into their decision is user selectivity. There is a perception that mySQL is easier to install and optimise, or that there is more support out there because it is more commonly supported out-of-the-box on managed hosting. While this perception may not be true, that it exists has an effect and it might put off certain (less experienced) admins from installing themselves, potentially reducing support burden and perhaps funnelling some of them towards GitLab's own hosted services...

There are no comments on this comment yet.