Azure dropping database support for MariaDB. Users advised to migrate to MySQL
azure.microsoft.com
azure.microsoft.com
> On 19 September 2025, workloads running Azure Database for MariaDB will be deleted and associated application data will be lost.
This is the most insane part to me. Not only will they not support it, they're going to delete all of your data!
Not giving updates and not allowing customers to create new instances is one thing, and is normally how these big deprecations are done. Outright destroying your customers' data just because they didn't migrate in time is wild (and its very easy for something like a database migration to take much longer than 2 years).
That old IBM one?
[0] https://en.wikipedia.org/wiki/IBM_Information_Management_Sys...
I don't know anything about this, but I'm near this on the postgres side of azure. On that end I've seen a couple transparent migrations & have been working on less transparent ones too (such as pg11 eol). This handling of mariadb casts a bad light on the db services as a whole that doesn't match what I've seen previously
I think it is fair instances no longer operate though perhaps taking backup of the data before deletion would be good
It’s nothing new at this point. MS is such a huge org, they can tank the bad PR. Save on hosting, support, and bandwidth costs of MariaDB. Ultimately saving much more in $$$.
The only losers: the customers
Bingo.
The CFO wants free shit. The CTO … also wants free shit.
Every one else is left dealing with Azure.
Also AAD.
That's not perfect, but much better than when last year GCP retired IoT Cloud Core with just one year notice, a much less public announcement (an email to affected customers and a note on the product page) and no clear migration path.
Not anymore for a while, unless application developer has been very careful in using DB features. Also, there are things like how indexing differs in two. If ORMs have been used, without a good DBA being available... there are many landmines on the migration path.
It might surprise some people to learn that companies are made up of humans, who have various biases, and are subject to various pressures - like politics and bureaucracy - to produce certain results. Not every decision they make is inherently going to be the best decision
Microsoft, meanwhile, is moving towards synapse and fabric which is just everything you need in one spot, (more) easily integrated. I'm not saying it's perfect, but the vast, majority of companies I've worked with don't have the expertise or desire to put together some bespoke architecture taking into consideration the 5 options they have every single step along the way. They want something they can use out of the box.
Also, they have really good documentation for high-availability (e.g., paired regions)
For some of us, being completely locked in is an explicit objective. We brag to our customers about the fact that our only major technology vendor is Microsoft. We use AWS but only incidentally for things Azure isn't fantastic at right now.
It's nice not having to constantly think about what to paint on the canvas. If you allow them to, Microsoft can completely guide your IT journey. If you don't constantly dig your heels in and keep your arms and legs inside the ride, this generally works out. The part where it gets shitty is when you absolutely insist on fighting against their patterns. You may win in the short term, but you have to be prepared for the long term effects and downstream frustration.
A good example of the "don't fight it" for us was throwing away our custom logger in favor of Microsoft's application insights crap. I don't like it in nerd terms (because I still think the custom system was better in most ways), but in business terms, it's infinitely better for all involved - The chances I can find someone on LinkedIn who can manage my Azure logging infrastructure are infinitely greater than finding someone who has experience with my custom logger's private repository.
If anyone bragged to me about this I would laugh in their face. You're putting your entire company at major risk.
Sometimes it has benefits, and sometimes its necessary, to use something like Azure. But I would never actively seek tying your existence solely to a single company, nor would I be happy about it. And I would certainly never _brag_ about it. That's insane.
Every company and every vendor has strengths and weaknesses. Laughing in someone’s face for choosing to use one platform is ridiculous at best.
My entire almost 30 year career has been Microsoft centered, except for brief stints with Novell, mainframes, and OS/2.
And based on my anecdotal evidence over many companies and many years, Microsoft has been pretty solid.
Don't you think that over a 30 year tech career that I've touched and used many different products and technologies?
If you bragged to me about being locked into Azure I would be very puzzled.
I hadn't seen the article you linked though and will say it seems to be in good taste.
If this isn't enough for you, there's also ChaosDB, the cross-account vulnerability Palo Alto found (https://unit42.paloaltonetworks.com/azure-container-instance...), among many others.
This isn't an isolated instance, that's a pattern.
Yes, every company and every vendor does have strengths and weaknesses. That's why it's foolish to lock yourself in to only one vendor.
If you locked yourself in to AWS, for example, you'd benefit from some great AWS services, but be stuck using the awfulness that is Workmail/Workdocs. Or you could lock yourself into MS and get Outlook/Office, but then be stuck using subpar offerings like Azure Functions or be a victim to their lackadaisical attitude towards security. Why would you ever choose to do either of those? Instead, you can choose both Microsoft for Outlook/Office, and AWS for other offerings that they are stronger at. Now you benefit from the strengths of both, while avoiding their weaknesses.
If you _can't_ do that, there might be good reasons and that's fine. But to _intentionally_ not do that, and especially to _brag_ about not doing that is laughable, no "holier than thou" attitude required.
Honestly Microsoft isn't any better, but if buy Premier Support (expensive), you can eventually talk to the actual development teams. You also get a person in a suit who will talk to your execute team and take the blame, which is an important feature for managers.
We use AWS but, the same argument applies here. It's far, far, far more likely that the developer who implemented the solution leaves than AWS or MS pull the rug from under us.
Given the choice between setting up an ad-hoc solution with one developer, or using an existing managed offering, putting all your eggs in an employee when they have an average tenure of 2 years is _way_ more risky.
We've had to warn you about that before, and also about other guideline violations recently. Could you please review the rules and stick to them? https://news.ycombinator.com/newsguidelines.html
A couple of examples:
- https://learn.microsoft.com/en-us/azure/search/search-sku-ti...
- https://azure.microsoft.com/en-us/pricing/details/app-servic...
But being locked in itself is certainly a very weird objective.
It wasnt just that. They also advised managers to enforce the use of teams for security reasons - which is a bit like advising that you install windows for open source reasons.
And while SQL server worked fine, postgres and mariadb were initially "unapproved" for security reasons and dog slow once they were (& support couldnt help for some reason).
In business terms Microsoft seems to be basically be a rebranded Oracle - playing an elaborate game of vendor lock in using every trick available while trying to maintain a thin veneer of deniability, circumventing the need to compete on the quality of their software.
Now if youll excuse me I have an unwieldy YAML github actions mess to unwind so we can move to a different CI platform. I wonder why they let it get so bad.
Are you a business consultant for MS
I've always been fond of it due to how much it gives you straight out of the box.
I'm on AWS now and sadly it doesn't seem to compare whatsoever. A custom solution seems like it would take a fair bit of effort just to reach basic parity.
Why not do something standard with no platform lock-in?
We do structured logging and push them to an Elastic stack with fluentd. For now we use an Elastic we deployed on a Linux VM but 1) we can move at any time, either from cloud provider, or stop using Elastic if we want to, and 2) we can probably find more people who can manage that than whatever Azure solution you’re using
I see no reason for getting locked in for something like logs. We actually did that with AWS Cloudwatch at some point and it was a horrible experience
As a dev I agree with you entirely.
However for a business this is very definitely a valid stance to take (as covered by some sibling posts). To dismiss it out of hand is a failure to accept that business priorities and concerns can, and often do, differ from technical ones.
I like that things I did over a decade ago on AWS still work. I don't like that Google throws me on the curb every few months. Azure is in between, but closer to AWS. 95% of the cost is maintenance, so AWS > Azure >> Google.
I always search for something comparable in terms of value, but always fail.
MSSQL was also very cheap while Microsoft was trying to break into the database market. A few years later it turned into one of the most expensive options available. Vendor lock-in is never cheap.
https://aws.amazon.com/compare/the-difference-between-mariad...
Or maybe that's just how I read paragraphs like this:
> MariaDB is more scalable and offers a higher query speed when compared to MySQL. This makes it good for managing large-sized data. You will also find more features in MariaDB that MySQL doesn’t have, like sequence storage engines and virtual columns. You can also use multiple engines in one table.
> However, MySQL has been around for much longer than MariaDB. Some organizations prefer the enterprise support that MySQL offers.
I know multiple companies that do java, and steered clear of mysql as a result.
EG, fear
https://opensource.stackexchange.com/questions/13287/mysql-c...
Where is the ape shit?
Even if you don't distribute your software it's good to be at least aware of your bill-of-materials. If your company decides to pivot and start licensing out the software then you want to be able to flag any issues like this quickly.
The PostgreSQL JDBC driver doesn’t present this problem to you.
You can use it in an internal product that you use commercially, even if the program interacts with external users (e.g. web server) which is a big reason why AGPL exists.
Although, it's best to aware of what internal tools and software may require GPL distribution. For example it's the position of the FSF that distribution of internal tools to contractors requires adherence to the GPL.
https://www.gnu.org/licenses/gpl-faq.html#InternalDistributi...
Other things in there are a bit of a head-scratcher. Using multiple storage engines in one table is a terrible idea ACID-wise, since each storage engine has its own separate transaction implementation (if it has one at all). If I was to list meaningful features in a MySQL vs MariaDB comparison, that one wouldn't make the list at all...
In any case, AWS built Aurora on MySQL and not MariaDB. There are numerous possible reasons, but it seems like an important data point to consider.
I'm looking forward to certain OSS zealots in the database support for $$$ industry coming in here and defending this. Folks will happily defend the strip mining and then try and go after the scraps
Meanwhile Percona Server is a drop-in replacement for MySQL, essentially it's a large patch-set on top of MySQL rather than a fork. Percona Server releases line up with MySQL releases and versioning. Whenever Percona Server features break binary compatibility, it's explicitly noted in their manual, and not enabled by default.
Also MySQL makes some different tradeoffs than other databases, and while some of those may eat your data they can also make MySQL the best choice in some situations.
MariaDB is an attempt at a better, freer, faster fork of MySQL, viable as a drop-in replacement. That comes with all the expected drama around the MySQL/MariaDB choice and the companies behind them.
MyIsam and Aria tables are so much nicer with the data structured logically in files which hold the data of individual tables and directories which hold the data of individual databases.
I have
innodb=OFF
In the mariadb.conf on all my servers.I have yet to see a single instance of this happening. And I have been running a bunch of servers for decades, each serving complex web applications to hundreds of thousands of users.
innodb_file_per_table=ON
InnoDB supports database transactions, so you/an update/insert can use rollback, which MyIsam and Aria tables can not do (they work like auto commit)
they work like auto commit
Which makes the code way simpler and performance way higher.This whole thread reads like a few folks tried some setup without bothering to turn a single nerd knob and then complained about the results.
Innodb > myisam in any case where you’re actually inserting.
I have been sitting together with folks whose life is configuring MySql and they couldn't tune InnoDB to match the performance of MyIsam.
This was for an application which did a long running numbercrunching job on a large database with a mix of inserts/updates/selects.
Might be different for other types of workloads. But for this workload, InnoDB did not stand a chance even with a lot of tuning.
For initial bulk file loads using mysqlsh [0], MyISAM doesn't stand a chance because it takes a table lock, so the tool can't parallelize the import like it can with InnoDB.
I wrote a small script to test this [1]. tl;dr 12,500,000 rows totaling 2.75 GB took 6 min 57.2374 sec at 6.59 MB/s for InnoDB, and 11 min 18.4550 sec at 4.05 MB/s for MyISAM. During the test, whereas the InnoDB load utilized multiple cores, the MyISAM load only saturated a single core.
Now, normal INSERTs are likely another story. Working on that test now.
[0]: https://dev.mysql.com/doc/mysql-shell/8.0/en/mysqlsh.html
[1]: https://gist.github.com/stephanGarland/06ff4820f99e5966ba097...
tl;dr On an empty table, InnoDB is 1.7% slower than MyISAM. On a full table (I raised bulk_insert_buffer_size to 128 MiB, which is a MyISAM-only optimization, and is more than enough to handle 10,000 rows of my data [21 MiB]), they are effectively identical, with InnoDB being 0.1% slower than MyISAM.
It's worth noting that this is with InnoDB's defaults for doublewrite enabled. If (and only if) you're using ZFS, you can disable that, and get an enormous speed boost. These data dirs are on XFS, so I didn't disable the doublewrite buffer.
Finally, I tried some simple `SELECT COUNT(*) WHERE user_id <= ...` - `user_id` is the PK and a UUIDv7, inserted in order so as to avoid page splits for InnoDB. Not as familiar with MyISAM's page layout, but I assume it at least isn't _hurt_ by ordering on insertion. The value selected was near the end (~1000 away), so it had to do a huge covering index scan.
For InnoDB, I saw [22.01, 22.39, 22.69] seconds. For MyISAM, I saw [27.12, 27.53, 26.81] seconds.
If you're able to give me some specific workloads, or settings to tweak for MyISAM, I'm very willing to redo the test, but as of now I'm unconvinced that MyISAM has an edge.
[0]: https://gist.github.com/stephanGarland/cc505a9d9c0d044a340fa...
Some of the tables were so big that neither the table itself nor the indexes fit into memory.
The important tables where rather narrow. Like 5 integer fields or so. But long (tens of millions of rows? hundreds of millions? Can't remember).
The queries were a continous mix of selects, updates and inserts.
Some of the selects were based on multiple criteria (SELECT ... FROM ... WHERE x=... AND y=...).
Some of the updates were too (UPDATE ... WHERE x=... AND y=... SET ...).
None of the queries took very long. The machine was doing hundreds of queries per second if I remember correctly.
The whole process took weeks (billions of queries, if I remember correctly).
You could maybe have matched with a change in the transaction isolation level for innodb
I've created 3 tables with an auto-incrementing unsigned bigint as the PK, and then 4 unsigned int fields with random values. Each table has 25,000,000 rows (and has unique values, modulo the PK). Once they're loaded, and I come up with some queries, I'll create some indices, and then reduce the buffer pool to < index size to mimic those conditions.
I won't be doing billions of queries, though :p
So what happens with InnoDB as writes increase is that eventually you get freezes while the disk view catches up, which frees up journal space so it can go on another writing spree. If you try to shut down the database during one of these freezes it hangs. If you force it to restart anyway, it immediately freezes again on restart... until it frees up some journal space. Paradoxically in this case you have to decide how long of a freeze you can tolerate and reduce the size of the journal(s) accordingly.
MyISAM doesn't write the journal, so it doesn't have journal writes. "Half as many writes" is the best case, in practice there are additional writes pertaining to indexes. (You can be even more clever and disable updating indexes or even drop all indexes and re-create them after all table writes are completed. You can even write to some temp table, build the indexes on it, then rename it to the actual table; or fail over to a new node with the refreshed tables.)
Everything I know about tuning InnoDB I learned tuning DEC RDB (based on the KODA engine, Oracle bought RDB to get the KODA engine for its distributed locking implementation), not much has changed in 30+ years.
In the context of cloud, (MariaDB versus MySQL) what both brand options offer is multiple engine support. The cloud tends to offer its own engines, under its own brand(s).
This is silly. I would say most databases in production in the world have zero need for ACID compliance.
I know plenty of companies making millions of dollars of revenue per month off their MyISAM table database products. Hard to do that with /dev/null I assume.
It works fine depending on what you are doing. Granted, there are typically better options these days, but this goes back 15+ years of silliness. Many (most?) web apps are write once, read millions.
For high volume/low value data that doesn't need perfect accuracy or consistency you can make MySQL/MariaDB absolutely fly.
That said, I hear PSQL can get close these days turning some knobs as well.
But, the ACID argument is tired and usually made in places where it simply is irrelevant. Most apps simply don't matter if they drop some data here and there, but developers act like they are building critical banking systems for their ad viewing platform. This is probably a top 10 favorite bike shedding topic I've seen in dev meetings over my career. In 90% or better cases you could have chosen literally any RDBMS and been fine, the arguments about it taking more time than the choice made will ever save.
(caveat that while I don't -enjoy- modern Mongo, it's no longer meaningfully the thing that said joke is about)
"One statement per transaction" is a limitation you need to be able to accept, but -if- that's the case the data safety is likely relatively fine.
MyISAM, much like pre-wiredtiger MongoDB, sits firmly in the "probably don't put anything into this you can't recreate" category for me.
Also remember that filesystems are much better at leaving something consistent behind (maybe consistenly broken, but that's still often better for getting things fixed) even after a nasty crash than they used to be - so while the last time I used MyISAM many many years ago we did absolutely get data loss issues, I wouldn't be surprised if we'd've lucked out if we'd had a 21st century filesystem instead of UFS.