What I'm up to lately (giving love to some projects):
* Fixing bugs in DBD::mysql, just released 4.015, 4.016, and
next 4.017. I had a patch sent yesterday from a
user/developer that I want to get out there
* Memcached::libmemcached - 0.4201 version - now using
latest libmemcached 0.42. This is the only Perl client that
supports binary protocol!
patg@patg-desktop:~/code_dev/perl-libmemcached$ PERL_DL_NONLAZY=1
/usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0,
'blib/lib', 'blib/arch')" t/12-set-get-binary.t
t/12-set-get-binary....ok
All tests successful.
Files=1, …
Working on a new set of replication APIs in MariaDB, I have given some thought to the generation of replication events on the master server.
But there is another side of the equation: to apply the generated events on a slave server. This is something that most replication setups will need (unless they replicate to non-MySQL/MariaDB slaves). So it will be good to provide a generic interface for this, otherwise every binlog-like plugin implementation will have to re-invent this themselves.
A central idea in the current design for generating events is that we do not enforce a specific content of events. Instead, the API provides accessors for a lot of different information related to each event, allowing the plugin flexibility in choosing what to include in a …
[Read more]Remember the idea behind renaming Maria, the storage engine? People regularly get confused with Maria the storage engine, and MariaDB the database. We got a whole lot of good names, and here’s a short-listed amount of names (short-listed by Monty Program employees down to about 15), and now its up to YOU to help us choose what the new name should be. Quick, go take the survey.
Voting ends on Friday, July 9, 2010, at 23:59UTC.
The winner will be announced on the first day of OSCON on July 19 2010. The winner walks away with a …
[Read more]With the exhaustion of IPv4 address space looming sometime in 2012; probably earlier rather than later, it makes sense to ease on into IPv6 land. Without straying into tunnel broking and endpoint shenanigans 6to4 is a method of wrapping up IPv6 inside of IPv4.
(note that MySQL does not currently support IPv6 itself – but what we’re discussing here is about externally facing systems, like your web/application servers)
6to4 performs three functions:
- Allocates an IPv6 address block to any host/network that has a global IPv4 address.
- Wraps up IPv6 packets inside IPv4 packets for transmission over IPv4 using 6in4 (traffic is sent over IPv4 inside IPv4 packets whose IP headers have the IP protocol number set to 41; IPv6-in-IPv4. ) …
Note: Article has been edited as I was confusing MarisDB and the
Maria Stoare Engine!
Just for the heck of it, I decided to try a very simple benchmark
on the Maria Storage Engine again. This time, I'm using a simple
SELECT. The table I use looks like this:
CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
`c2` char(100) DEFAULT NULL,
PRIMARY KEY (`c1`)
);
Which should be simple enough. I fill this with 1.3 millions
rows, with c1 having consequitive numbers from 1 and up. My
benchmark consists of random SELECTs of the c2 column from this
table, using a primary key lookup on c1. I run this on 400
concurrent threads with each thread doing 1000 SELECTs. Ignoring
the actual values, MyISAM and InnoDB come out pretty close in
performance, with InnoDB slightly behind. Which is reasonable.
Maria is at less than half the performance of MyISAM though. This
is worrying. And I know what you say, …
For the replication project that I am currently working on in MariaDB, I wanted to understand exactly what information is needed to do full replication of all MySQL/MariaDB statements on the level of completeness that existing replication does. So I went through the code, and this is what I found.
What I am after here is a complete list of what the execution engine needs to provide to have everything that a replication system needs to be able to completely replicate all changes made on a master server. But not anything specific to the particular implementation of replication used, like binlog positions or replication event disk formats, etc.
The basic information needed is of course the query (for statement-based replication), or the column values (for row-based replication). But there are lots of extra details needed, especially for statement-based …
[Read more]Mark’s done an excellent job again, getting VM’s of MariaDB 5.1.47 (release notes, changelog) out there for download. He’s also improved the bandwidth available at the box hosting these images. Get it for Ubuntu 10.04 or OpenSolaris 0906.
Related posts:
- …
Original title was ‘MySQL dropped from openSUSE!!!‘. I wanted to have some shocking title, but I changed it as I don’t really want to scare you so much But it is partially true, there is no mysql package in openSUSE anymore. But of course we DID NOT really dropped MySQL. In fact, we now have more MySQL in openSUSE then we ever had! Do I got your attention? Read on
What and why?
What really happened is that I renamed original MySQL package. Now it is called mysql-community-server. If you take a look at SUN/Oracle web, they call it like this for a long time, so it makes a little sense… As a result, there is no real package called mysql in openSUSE anymore. But mysql-community-server provides mysql so even if you try to install mysql, it will work. This change also have one funny consequence. Do you remember package mysql-client? Now it’s …
[Read more](No three-part series is complete without a part 4, right?)
Here is an analogy that describes well what group commit does. We
have a bus driving back and forth transporting people from A to B
(corresponding to fsync() "transporting" commits to
durable storage on disk). The group commit optimisation is to
have the bus pick up everyone that is waiting at A before driving
to B, not drive people one by one. Makes sense, huh? :-)
It is pretty obvious that this optimisation of having more than one person in the bus can dramatically improve throughput, and it is the same for the group commit optimisation. Here is a graph from a benchmark comparing stock MariaDB 5.1 vs. MariaDB patched …
[Read more]So this is about a SELECT COUNT(*) FROM tblname without a WHERE clause. MyISAM has an optimisation for that since it maintains a rowcount for each table. InnoDB and PBXT can’t do that (at least not easily) because of their multi-versioned nature… different transactions may see a different number of rows for the table table!
So, it’s kinda known but nevertheless often ignored that this operation on InnoDB is costly in terms of time; what InnoDB has to do to figure out the exact number of rows is scan the primary key and just tally. Of course it’s faster if it doesn’t have to read a lot of the blocks from disk (i.e. smaller dataset or a large enough buffer pool).
I was curious about PBXT’s performance on this, and behold it appears to be quite a bit faster! For a table with 50 million rows, PBXT took about 20 minutes whereas the same table in InnoDB took 30 minutes. Interesting! …
[Read more]