A new and updated version of the Zend PHP Certification is on the
way and will be available starting August, 31st:
Zend PHP 5 Certification Page
It's a complete rewrite, but the exam will still (as with the PHP
4 exam) cover 70 questions in 90 minutes. A new Study Guide will
be available starting September and current PHP 4 certified
people will get a discount for the PHP 5 exam.
To get detailed information, you can also listen to the Webcast Recordings at the phparch.com
website.
And for those who prefer taking a MySQL 5 certification, there's
also information available for …
Here's another good rule about using MySQL in your
application:
Never let your application access the MySQL server with a user
that has SUPER privileges (at least unless there's a VERY good
reason to do it).
There may be more reasons for that but one is that it might stop
your root user from accessing the server if all allowed
connections are being used (the "Too many connections"
error).
Here's what the manual says:
"mysqld actually allows max_connections+1 clients to connect.
The extra connection is reserved for use by accounts that have
the SUPER privilege. By granting the SUPER privilege to
administrators and not to normal users (who should not need it),
an administrator can connect to the server and use SHOW
PROCESSLIST to diagnose problems even if the maximum number of
unprivileged …
Jay Pipes continues cache experiements and has compared performance of MySQL Query Cache and File Cache.
Jay uses Apache Benchmark to compare full full stack, cached or not which is realistic but could draw missleading picture as contribution of different components may be different depending on your unique applications. For example for application containing a lot of clode but having only couple of queries to MySQL parsing may be performance bottleneck, assuming PHP opcode cache is not used. Also different applications may have different cache hit ratios which also needs to be factored in estimating improvement for real application.
So instead of following his route, especially as Jay is going to publish his comparison of all caches anyway, I decided to check peak performance of all caches compared to …
[Read more]Open source projects have a lot of documentation. Some professionally written, others community contributed. One thing that community contributed documentation has going for it is the passionate users that write localized content.
Localization of documentation is important. While we take it for granted that we all speak/read/write/understand the English language, a lot of people just starting out in non-English speaking areas might find it useful to read some localized content. Hook them based on their interests, and slowly they can be weaned off to other non-localized documentation, and might contribute to the localizing cause eventually, even.
Localization is also not easy. If you tried to localize the MySQL Documentation, …
[Read more]I've been using a home grown scripting language called Raven for a couple of years now. I think it is a good tool for working with MySQL, particularly when one needs to crank out a quick script on the fly using simple and readable code. Currently it spends a lot of time talking to my cluster. Here are the basics...
Connect to the Database:
'mysql://user:password@localhost/test' open as $mysql
Select some records:
'SELECT * FROM mytable' $mysql query as $result
Get the number of selected records:
$result selected as $num_rows
Iterate over the result set and output a CSV:
$result each as $record $record ',' join print "\n" print
Insert a record and return the last AUTO_INCREMENT value …
[Read more]
Why would you ever want to deliberately cause a deadlock?
Sometimes a very large deadlock in MySQL will fill the output of
SHOW ENGINE INNODB STATUS
until it truncates, so you
can't see information about transactions, log and I/O, buffers,
and so forth. I know only two solutions to this problem: 1)
restart MySQL and 2) cause a small deadlock so the LAST
DETECTED DEADLOCK
section shrinks to an acceptable size.
In this article I'll show you how to cause a small deadlock, and
how to use innotop to do it more easily.
This article is part of a series on how to use innotop to make your life easier.
Yes, that's right. You can start looking for airborne swine! We have released the first drop of Connector/Net 5.0! While there were reasons why this release took so long to get out, I'll take a page from Ballmer's book and commit to you that it won't happen again. In any case, this release has lots of goodies baked in.
- ADO.Net 2.0 support
- Usage Advisor
- PerfMon hooks
- Completely virtualized execution pipeline (this will support use of the client library and embedded server later)
- Faster execution
- Type safe methods on MySqlDataReader completely avoid value boxing
- Procedure metadata caching
- New option for not resetting the connection on pool checkout
- And much more!
There are a few things broken or missing in this first code drop.
Here is the current list.
- Connecting via shared memory or using …
Yesterday's article on connection handling and caching techniques spurred a number of comments both on and offline, regarding whether or not the solution I propose is actually a good one. I wanted to follow up with some benchmark results that show the performance difference of caching in files, versus using the MySQL query cache.
A note about lazy loading
Before I go on, however, I did want to point out that Andrew Magrude did have an excellent comment on the previous article, and brought up something I had not thought of regarding the mysql_real_escape_string() function. He correctly states that using the mysql_real_excape_string() function will require a connection to the database, and for folks concerned about SQL injection attacks for various character sets, you will want to ensure that a connection is made to the database before trying to use …
[Read more]
Snapshot of the vmware config used (two running instances
required for the example) This is a quick tour of DRBD and how it
compares to local RAID and to MySQL replication. DRBD is short
for "distributed raw block device", so what it does is
essentially RAID-1 over a network cable. You will be able to have
two copies of a block device on two different physical machines,
one of them the primary, active node and the other one a
secondary, passive node.
The DRBD tour in this blog post has been created on two vmware
instances with a Suse 10.0 Professional installation on each
which I am using to show the most essential features of DRBD.
Each vmware has a bit of memory, a network card, a boot disk with
a text only Suse 10 installation and a second simulated 1 GB SCSI
disk besides the boot disk to demonstrate stuff. The two
instances are connected on a simulated local vmnet instance and
share the 10.99.99.x/24 network, they are called …
Yes, that's right. You can start looking for airborne swine! We have released the first drop of Connector/Net 5.0! While there were reasons why this release took so long to get out, I'll take a page from Ballmer's book and commit to you that it won't happen again. In any case, this release has lots of goodies baked in.
- ADO.Net 2.0 support
- Usage Advisor
- PerfMon hooks
- Completely virtualized execution pipeline (this will support use of the client library and embedded server later)
- Faster execution
- Type safe methods on MySqlDataReader completely avoid value boxing
- Procedure metadata caching
- New option for not resetting the connection on pool checkout
- And much more!
There are a few things broken or missing in this first code drop. Here is the current list.
- Connecting via shared memory or using compression …