I test updates, queries and their mixed cases. It works
well.
I haven't measure the performance impact yet. I think the
influence of Aspect C should be small since it just adds function
calls. If the inline is supported when compiling, the cost should
be minimum.
Test 1:
./sysbench --test=oltp --oltp-table-size=1000000
--mysql-table-engine=pbxt
--mysql-engine-trx=yes --mysql-user=root
--mysql-socket=/tmp/mysql.sock
prepare --mysql-db=test
SysBench Result 1:
sysbench v0.4.8: multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
Creating table 'sbtest'...
Creating 1000000 records in table 'sbtest'...
Profile Result 1:
System_call Total_Execution_Time Total_Call_Times
pread 719098 24312
pwrite 11799545 1026503
malloc 732 453
calloc 0 0
realloc 0 0
pthread_mutex_lock …
I was just reading this article on PC World about the launch of GPLv3. I
reckon it's a decent article in that it actually bothers to
explain the foundation of GPL (Richard Stallman's software freedom principles).
One quote (from an engineering professor at MIT) gets it wrong
though:When something in the free software world gets improved,
there's no waiting to buy a new license, everything is shared
with all users, so everyone benefits[...]That's just not true.
GPL does not invoke an obligation to publish modifications. Of
course, when the resulting work is distributed, the source code
should also be made available to those same people. But that's
not quite the same. And there's more to it. Let's take the
following example of how you could do business (that is, make
money) …
I've written the following program to profile system calls by
using Aspect C.
Put this file (profile.acc) inside the src directory, ACC will
automatically weave it with the original code, and then compile
it.
#include
#include "xt_defs.h"
#undef PROFILE_DEBUG
/*
* profile_get_time
* Return: current time in micro seconds
*/
inline long profile_get_time( )
{
struct timeval current_time;
gettimeofday(¤t_time,0);
return (current_time.tv_sec)*1000000+current_time.tv_usec;
}
/*
* profile i/o function: pread
* we record its execution time when pread is called
*/
long profile_pread_access_time=0;
long profile_pread_freq=0;
int around(): call($ pread(...)) {
long start_time = profile_get_time();
int val = proceed(); …
Tonight I spoke at the NY MySQL Meetup. The topic “Practical Performance Tips & Tricks” was a full packed 1 hour session, with 4 x 15 minute sections on Beginner, Intermediate, Advanced and MySQL Proxy. The goal to hopefully cover content for different level of attendees. This meeting followed up the large turnout from last month’s meeting with at least 35 people. Thanks again to Logicworks for sponsoring the night and providing the beer and food, especially to adjust for the late arriving presenter.
My Slides are download able in PDF format here.
Some additional links that were discussed during the meeting for reference included.
- …
I haven't been blogging about the things I used to -- how-tos and technical hacks -- because I've been working quite hard on MySQL Toolkit and, believe it or not, innotop. I've made it possible to write innotop plugins, which have been very useful to our team at work, and I'm working on documentation. Plugins won't make it into the upcoming release; it'll just be bug fixes and documentation. These projects have taken up most of my free time.
I've also tentatively joined a group of people working on a very large, exciting, secret project which may consume the rest of my summer and/or much of the rest of the year. (I've been turning down consulting gigs and other projects because of this). If this secret project works out, I'll be writing more about it here, you can count on that.
In the …
[Read more]This release fixes some bugs and improves the chunking functionality. MySQL Table Checksum had a few minor bugs and one major bug with the chunking functionality. I also rewrote the chunking, though the behavior is backwards compatible. I am very happy with the way it works now, and will probably not make any more incompatible changes to it. The changes enabled me to add support for chunking on float, double and decimal columns.
It still doesn't support chunking on character-based columns, though I know now how I'll do it if I do. Also, support for ENUM and SET shouldn't be hard to add. I have no need for these features myself. If you need it, please file a bug report on the Sourceforge tracker.
Ask a simple question, get a simple, but subtle answer. I asked Savio Rodrigues, who replaced me on the Open Sources blog but originally blogged here, to comment on the state of open source at IBM. He gave me a bit more than that.
You know, IBM, the company that essentially carried open source into the enterprise on its back in 2000 when it pledged $1 billion to fund Linux. Lately, though, IBM's has been less flashy with its commitment to open source though, as Savio points out, no less involved. As Savio reports, however, IBM's commitment to open source is broader than source code. Open source without open standards isn't of much interest to Big Blue.
In this fifth installment of the Open Source @ Series on The Open …
[Read more]
Brian
has written a library that implements "XML Row
Storage", and has added it to his HTTP
Storage Engine.
I've got a couple of hours to add it to my S3
Storage Engine.
I've already stumbled over the fact that my engine as it was
won't build against a very recent MySQL 5.1 source tree. Type
byte is now uchar, and the call parameters of get_server_by_name
have changed.
SHOW CREATE TRIGGER was added two weeks ago
into 5.1 branch - it turned out there is no way to do mysqlbackup
without this statement when the trigger is defined in a character
set that is not UTF-8.
And while we are on triggers, some most painful locking bugs with
triggers are being fixed too (in 5.0) - Bug#26141 mixing
table types in trigger causes full table lock on innodb table
and Bug#24989 'Explicit or implicit commit' error/server
crash with concurrent transactions. With these two fixes in,
triggers should actually become usable with InnoDB.
Problem #1 - “[notice] child pid 13449 exit signal Segmentation fault (11)”
On a OpenBSD v3.7 i386 system running Apache v1.3.29 (not chrooted) with PHP v5.1.4 I upgraded HTML_BBCodeParser from version 1.1 to version 1.2.2 by running at command line “pear upgrade-all”. After the upgrades were complete the web site would not load a web page anymore. I looked at my HTTPD server logs and noticed I was receiving the following error message in error_log file, “[notice] child pid 13449 exit signal Segmentation fault (11)” whenever there was a HTTP request on port 80 or 443 to the web site. I couldn’t understand what the problem could be but then decided to uninstall HTML_BBCodeParser …
[Read more]