At the MySQL User's conference 2008 I did a tutorial on MySQL User-defined functions. At the same
conference, Brian Miezejewski and Mark
Atwood did a talk on aggregate UDFs.
In relation their upcoming talk, Mark wrote a blog post reporting that MySQL Aggregate UDFs are
three times slower than equivalent native functions:I just proved
to myself via testing and benchmarking that user defined
aggregate functions are about three times slower than the call
interface to the built-in functions.Later on he posted an update, …
I am often asked why we chose a distributed, web-based
architecture for the Enterprise Monitor application. For those
not familiar with how the app is deployed, the Enterprise Monitor
is typically installed within a customer firewall and is
comprised of 3 components:
- a lightweight agent written in C, that is deployed to each
monitored server to collect MySQL, OS data and Query content and
diagnostics
- a centralized server that monitors the collected data and
queries, sends out alerts and serves up the supporting web
application
- a MySQL repository that holds the collected data and
queries
A typical deployment looks something like this:
Having come to MySQL from Embarcadero Technologies, I …
An event truly fitting an “open world” — I will be speaking at Oracle Open World.
How does a wild-mannered MySQL DBA like me get to speak at an Oracle conference? Well, after I received the MySQL Community Award two years in a row, Dan Norris contacted me, and encouraged me to submit a proposal with him on how to contribute to the community.
Oracle has a formal program for recognizing community members at two levels: the Oracle ACE Director, and the Oracle ACE. An Oracle ACE Director is expected to make a 12-month commitment to working with the community, while an Oracle ACE is bestowed upon folks to recognize their volunteer efforts in the past. More information about the program can be found on …
[Read more]
I spent some time during my vacation thinking about some
new ideas. I designed the first version of the NDB API
about 10 years ago and obviously in those days the maximum
number of CPU's in most systems was 2 so it wasn't a big
problem having a single mutex protecting send and receive
in the NDB API (The NDB API is the low level API used by
the
storage engine NDB which is the storage engine in MySQL
Cluster).
Another design criteria I made when designing the NDB API
was that most developers want to use a synchronous API.
Thus the asynchronous API was made afterwards and didn't
cover all operations. Most developers still develop using
synchronous API's, however most of the use for the NDB
API is for specialised applications such as Telco servers,
storage engine code, LDAP servers. Also I'm thinking in
even using it inside an operating system kernel to …
So, I've been involved in the Drizzle project for about five weeks now. Brian told me about a month and a half ago what the project was about when we were speaking on the phone about something unrelated. The project piqued my interest in a number of ways, and the direction Brian wanted to take drizzle — to be a pluggable database server microkernel (nano-kernel as Mark Callaghan calls it ) — was something I have been harping on internally at MySQL for over two years.
In addition to seeing eye-to-eye with Brian on a vision for the server kernel, I saw in drizzle the opportunity to create a real contributor community around a MySQL-derived project. Note, I say project, not product. Drizzle is a research project, not a marketable product. Do I …
[Read more]Thanks to the wonderful work of Ronald Bradford, a buildbot is now up and running for Drizzle and is accepting BuildSlaves. Not familiar with Buildbot? It's a tool which allows continuous and automated building and testing of a project with a public web-based interface showing which platforms are building and testing cleanly, and which developer has messed up a build or test
Adding one of your machines as a BuildSlave (a machine which performs the build and test) is quite easy, and Ronald has set up a few wiki pages describing the process:
[Read more]
Want to be debug all the raw MySQL statements sent to your MySQL box?
Just use wireshark.
In fact… here’s the magical command you need to run:
apt-get install apt-get install tshark
… now the command line version of wireshark is installed.
Now you can just start dumping the SQL commands running against your sever:
tshark -i 1 -T text -V -f ‘dst port 3306′ |grep -i ’statement: ‘
| cut -b20-
This will then dump all the SQL running against your server. For example:
SELECT COUNT( * ) FROM FOO WHERE FOO.ID = 'k~OVOe8XfxM' SHOW COLLATION SET autocommit=1 SHOW SLAVE STATUS /* lbpool */ SHOW PROCESSLIST /* lbpool */ SHOW SLAVE STATUS /* lbpool */ SHOW PROCESSLIST /* lbpool */ SELECT COUNT( * ) FROM FOO WHERE FOO.ID = 'dpm516E79n0' SELECT COUNT( * ) …[Read more]
I was with a customer last week, who leads technology and operations for one of the world's largest companies. We were talking through his priorities for the upcoming year, and on a page filled with various traditional priorities (consolidation, energy management, disaster recovery, regulatory compliance) were two interesting words.
"Open Source."
I asked what that meant, why it was there. He said they'd done an audit of the firm's development activities, and found an overwhelming number ("hundreds") of open source
projects that had been completed behind the scenes, beyond management's oversight. The projects were designed to solve problems deemed too expensive or difficult to solve with proprietary technologies - from meeting a tough budget, to automating a new process. And rather than fight the trend, they figured it was …
[Read more]MySQL is generally an all-around kickass piece of software, and like any good open source application, there are a host of tools you can use to squeeze every last drop of goodness out of it. Nearly all of them, however, are geared towards the operational DBA, leaving the wayward developer out in the cold.
Lately I’ve been working on optimizing our stored procedure library which is primarily responsible for generating all sorts of fancy reports for the users. We use lots of nested procedure calls and finding potential targets for optimization is a tricky and time consuming job. Enter Ghetto Profile.
It’s still pretty basic but gets the job done. How’s it work?
1 2 3 |
ghetto_profile.rb --attach crappy_code.sql mysql < crappy_code.sql ghetto_profile.rb --stats -uroot … |
Is Microsoft irrelevant? Perhaps according to some folks at OSCON. READ MORE