It's quite an effort to compile and test 3 versions of MySQL on 4
different machines, but that is what I have done for the first
binary distribution of the PrimeBase XT pluggable storage
engine.
Of course, its worth the effort because this is the "holy grail"
of the pluggable storage engine strategy. Namely, binary plug-ins
that work with the binary distributions prepared by MySQL and
others in the community.
And by creating an installer script I have made it easier than
ever to install the plug-in. So after you have downloaded the
binary package from http://www.primebase.com/xt, all you have to do
is:
1. Start your MySQL server.
2. Enter: sudo ./install
The installer will automatically determine the version of the
server running and install the corresponding plug-in.
…
Just wanted to let you know that we’ve got a new 5.1 beta release ready for download (5.1.15). Lots of fixes and minor changes went into 5.1.15 so be sure to check the release notes.
To date, the most popular new features in 5.1 continue to be partitioning, row-based replication, events (internal scheduler), and disk-based cluster. If you haven’t done so already, check out the tech white paper I wrote on 5.1 that has lots of examples showing the new 5.1 features in action.
One other interesting fact: according to our latest survey results, 22% of community users and 12% of enterprise customers are already using 5.1 in production. Of course, we don’t recommend you use beta software for production use, but it’s nice to see folks finding that the 5.1 beta can hold up under that kind of pressure.
Be sure to drop me a line …
[Read more]Have you ever seen connection in the SHOW PROCESSLIST output which is in "Sleep" state for a long time and you have no idea why this would happen ?
I see if frequently with web applications and it is often indication of trouble. Not only it means you may run out of MySQL connections quicker than you expected but it also frequently indicates serious problems in the application. If you do not use persistent connections and you have connection in Sleep stage for 600 seconds what could it be ? It may mean some of your pages take that long to generate (or might be the code simply gets into the tight loop and page never gets generated) it also could mean some of external Web Services are slow or not available and you're not dealing with timeouts properly. Or may be you have several connections to MySQL server and right now running query which takes that long ? In any case it is something frequently worth looking at.
…
[Read more]
In discussion the other day a co-worker was looking at a
benchmark
that I had created for a problem I was studying on threads with
write
performance.
He asked "What is open tables set at?"
I responded that I had it set to a thousand, which is normal
the
value I keep on the machine I do development on. I normally look
at
300 connections as an average load, but every so often I crank it
up
to around a 1000 depending on the test (which is a pretty
high
simulation, and not common among the average large
websites).
It crossed my mind at this point that I had no idea how the
database
behaved with default value in MySQL, which is 64, when you
were
running with this many threads. Anyone who has a large number
of
threads touching tables knows to crank up the table cache.
As the graph points out, depending on which engine you are …
Today I had a sort of short epiphany regarding getting progress of running statements in MySQL. MySQL already keeps a running count of rows touched in most multi-row statements (called thd->row_count1), so I figured there must be a way to make use of it. It was trivial to expose row_count through SHOW PROCESSLIST. After that, it was fairly obvious that another variable could be added: row_count_expected. For certain statements (currently only ALTER TABLE) it is easy to estimate how many rows will be touched, so that number can be used to calculate a Progress_percent column.
The Progress_rows number indicates progress within a given step of executing the query. For instance, if you run a SELECT with a GROUP BY that can’t be done using an index, you will see two cycles of Progress_rows: once with a State of “Copying to tmp table” and once with “Sending data”.
I implemented this all in …
[Read more]For far too long now RSS has been used in ways that don't really tap its true potential. Being able to syndicate my favorite headlines or blog posts is great. In fact, it helped to kick off a revolution in personal on-line publishing that is still growing and evolving. But I want so much more.
It's not for lack of vision. Back in 2005, Adam Bosworth painted a vision that eventually manifested itself as GData. I wrote about that a bit in Google's GData, MySQL, and the Future of on-line Databases.
It's not for lack of data either. You can get RSS output from lots of non-news and non-blog stuff. Everything from classifieds on eBay and …
[Read more]-- Sieve of Eratosthenes
-- The sieve of Eratosthenes is a simple algorithm to create a list of prime -- numbers up to some specified limit.
-- First, a list of all interger numbers from 2 up to the specified limit is -- created. Then, the algorithm repeats the following steps until the list -- is empty.
-- The smallest number of the remaining list is picked, it's a prime number. -- All multiples of this numbers are deleted from the list.
-- All the picked numbers are the primes numbers of the original range. DROP PROCEDURE IF EXISTS sieve; DELIMITER $$ CREATE PROCEDURE sieve (amount INT) BEGIN DECLARE cnt INT DEFAULT 2; DECLARE curprime INT; DECLARE lastprime INT DEFAULT 1; -- Temporary table speeds up operations DROP TABLE IF EXISTS mysieve; CREATE TABLE mysieve (nr MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY) ENGINE=MEMORY; DROP TABLE IF EXISTS primes; CREATE TABLE primes (nr MEDIUMINT UNSIGNED NOT NULL) …
[Read more]Following a discussion on mythtv on #xfs (as you do), and a wondering of “hrrm… i wonder what unit that timeout is” with some NDB code I wish to make the following announcement:
All timeout values in NDB related APIs will now be given in centijiffies of the server system. For APIs that can talk to multiple hosts, it will be furlongs per fortnight.
I feel that having a consistent interface such as this will lead to much less confusion and better apps.
My mom's telephone comes with a speaker that allows you to make calls without using the receiver. Of course, there are two buttons to control the speaker. One to decrease and one to increase the volume. So far so good.
After a power outage, the phone decided to reset the volume for its ringtone. It was barely audible, so my mom went to fix that and pressed the volume-up button she found on the keypad. This was, however, the aforementioned control for the speaker — not the ringer.
To make adjusting the speaker volume even more comfortable, pressing the controls turns on the speaker giving direct audible feedback. Nice. It just happens to also pick up the line to provide any audible signal.
So instead of adjusting the ringtone's volume, my mom picked up the phone line with the speaker which she usually never, if ever, does. I even suspect her not knowing about the speaker function and all the things that come with it. …
[Read more]