(Seventh part of the MySQL 5 general purpose routine library
presentation.)
Test unitsTesting is often considered a boring activity,
something that is not cool enough for a developer to take into
consideration.
Sometimes, it's true. Testing is almost as exciting as having a
haircut or trimming your nails.
It needs to be done, but you hardly welcome the task.
However, that happens when you don't test with method. Because
testing can be fun and it can be as rewarding as any other
programming activity.
What you need to do, is to move your testing schedule up to the
development schedule and put it in front of the code.That way,
you don't have just "some testing", which is usually fumbling
with a few examples to ensure that your routine does what you
thought it should do.
That's not testing. That's sampling.
And if …
It’s appalling that in this day of technological advancements and communication, the excuse for publishing dated information just doesn’t fly. 50 or 100 years ago you could be excused for writing something that was 6 months out of date, yet this article “Which Database Is Right For You?” Dated (2006-01-05) states:
So what doesn’t MySQL support? Today, MySQL doesn’t support views (’virtual’ tables made from other tables), stored procedures (small programs that can be stored in the database) or triggers (actions that the database can be told to do automatically when certain things happen). However, many of these features are promised in future versions.
Well as I finished the article, looking forward to the contact details to notify this “writer” of their dated information, …
[Read more]
Van Jacobson... a modest man. But you may know his name from the
TCP header compresson, and the traceroute and tcpdump tools. He's
here at LCA
2006, and presented a neat new idea.
As different components of our systems and networks speed up,
bottlenecks shift. It is wise to shift processing "outward" as
that's where most of the processing power is. This reduces
contention on the systems in the middle. A wise lesson on its
own. Scale out.
Back with the original story, (multi-)gigabit ethernet is
actually faster than many components of our computers. You can
increase bandwidth, but latency becomes a problem. Adding more
cores to the computer currently also increases the overhead, it
isn't the solution (on its own).
Jacobson "solves" the problem through a new queueing mechanism in
the Linux kernel, basically some minor modifications at the
various …
Some time ago, business were missing the components needed to run
their business - if they wanted to use Open Source software. That
is no longer the case, with SugarCRM,
Zimbra, and
SequoiaERP.
Accounting (general ledger style stuff, and mroe) is possibly the
last big challenges; some partically solutions are out there and
SequoiaERP is currently working on it too.
So all is well, right? Hmm...
If we look at the proprietary solutions, we see not just groups
of applications, but integrated suites from a single vendor. In
fact, many of these suites are actually more like platforms for
which third parties can develop extensions.
Contrarily, the above is highly functional and great on their own
but what I think might be missing is the …
One piece of SQL functionality that doesn’t appear to have any consistency or an ANSI SQL Standard is the management of system generated sequential numbers, used for example in suggorate keys.
MySQL uses AUTO_INCREMENT which serves the purposes adequately, however in my documenting of differences with Oracle in my upcoming MySQL Conference presentation “MySQL for Oracle Developers” there a number of key differences with Oracle’s SEQUENCE usage.
MySQL AUTO_INCREMENT to Oracle SEQUENCE Differences
- AUTO_INCREMENT is limited to one column per table
- AUTO_INCREMENT must be assigned to a specific table.column (not allowing multi table use) …
Today I just realized that the number of RSS
sites I am reading will eventually equal the number of Usenet
Newsgroups I once read. I am not there yet, I believe at my worst
it was only 80 groups or so. My current tally only shows me at
around 70 or so feeds. This though is minus the LJ blogs I read
since I still read them via LJ itself (though I am thinking that
I really need to change this), so I am probably well over 80 at
this point.
Come to think of it, the above tallies are just for text, if I
was to count the feeds I pull via iTunes I would have to add
another dozen. I happen to really like to listen to podcasts, and
I've been watching RocketBoom for a while now. I wonder if there
is some way to make iTunes spit out some friendly XML of my
podcast subscriptions?
The solution for LJ for me is to write a quick application to
suck up my friends list and turn it into OPML feeds, though I
don't read …
An elevator picks people up and moves them to different floors based on where they have requested. If an elevator picked up exactly one person on the ground floor of a building, dropped them off, and went down to get another person it wouldn’t be very efficient. Modern elevators pick up people and move them between floors in an optimal pattern. Disk access is pretty much the same idea if you think of the disk head as an elevator and the disk as a building. It takes time to move an elevator just as it takes time to move a disk head. Modern operating systems can change the order of disk accesses into a more optimal pattern.
There are many different algorithms for scheduling I/O. I’m going to cover the ones I know from linux and how they can help you make the best use of your servers disks.
CFQ (Completely Fair Queue)
CFQ maintains an i/o queue per process. Processes can post multiple reads …
[Read more]Just a friendly reminder. The Columbus area MySQL User Group Meetup is scheduled for Thursday, February 2nd. I will be there and would love to see as many local MySQlers as possible! Also, I'll be going to the PHP User Group meetup on Thursday, February 9th. Hope to see you there!
Peter Zaitsev, a Senior Performance Engineer at MySQL, recently let me know about Andrew Aksyonoff, an open source developer who has written a high performance FULLTEXT indexer and query engine called Sphinx. While not (yet!) a pluggable MySQl storage engine, Sphinx does include native support for querying MySQL databases. A while back, Peter blogged about Sphinx. I'm extremely impressed with Sphinx's performance characteristics, and I'll be interviewing Andrew sometime in this coming week, so look out for the interview on the MySQL Developer Zone. I'm very interested to hear Andrew's thoughts on the new MySQL 5.1 Pluggable Storage Engine Architecture and how he …
[Read more]