As described in the prior post, the shared-disk performance
dilemma is simple:
1. If each node stores/processes data in memory, versus disk, it
is much faster.
2. Each node must expose the most recent data to the other nodes,
so those other nodes are not using old data.
In other words, #1 above says flush data to disk VERY
INFREQUENTLY for better performance, while #2 says flush
everything to disk IMMEDIATELY for data consistency.
Oracle recognized this dilemma when they built Oracle Parallel
Server (OPS), the precursor to Oracle Real Application Cluster
(RAC). In order to address the problem, Oracle developed Cache
Fusion.
Cache fusion is a peer-based shared cache. Each node works with a
certain set of data in its local cache, until another node needs
that data. When one node …
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code. So what does this mean for Drupal?
An opcode cache is used to keep compiled PHP code in memory. In a nutshell, when there's a request for a Drupal node, there are all kinds of PHP code that need to be compiled before PHP can execute that code to query the database, create the webpage, and send it to the browser. The more complex your Drupal site, IE the more modules you have installed, the more PHP code that needs to be compiled. This compilation process occurs on every request to your Drupal site. By installing and enabling an opcode cache, your server will compile all the PHP code once, then store it in memory for later use. When a request happens again for the same PHP code, the opcode …
[Read more]The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code. So what does this mean for Drupal?
An opcode cache is used to keep compiled PHP code in memory. In a nutshell, when there's a request for a Drupal node, there are all kinds of PHP code that need to be compiled before PHP can execute that code to query the database, create the webpage, and send it to the browser. The more complex your Drupal site, IE the more modules you have installed, the more PHP code that needs to be compiled. This compilation process occurs on every request to your Drupal site. By installing and enabling an opcode cache, your server will compile all the PHP code once, then store it in memory for later use. When a request happens again for the same PHP code, the opcode …
[Read more]I will be joining a great list of quality speakers including John Allspaw, Theo Schlossnagle, Rasmus Lerdorf and Tom Cook at Surge 2010 in Baltimore, Maryland on Thu 30 Sep, and Fri Oct 1st 2010.
My presentation on “The most common MySQL scalability mistakes, and how to avoid them.” will include discussing various experiences observed in the field as a MySQL Consultant and MySQL Performance Tuning expert.
Abstract:
The most common mistakes are easy to avoid however many startups continue to fall prey, with the impact including large re-design costs, delays in new feature releases, lower staff productivity and less then ideal ROI. All growing and successful sites need to achieve higher Availability, seamless Scalability and proven Resilience. Know the right MySQL …
[Read more]
For decades the debate between shared-disk and shared-nothing
databases has raged. The shared-disk camp points to the laundry
list of functional benefits such as improved data consistency,
high-availability, scalability and elimination of
partitioning/replication/promotion. The shared-nothing camp
shoots back with superior performance and reduced costs. Both
sides have a point.
First, let’s look at the performance issue. RAM (average access
time of 200 nanoseconds) is considerably faster than disk
(average access time of 12,000,000 nanoseconds). Let me put this
200:12,000,000 ratio into perspective. A task that takes a single
minute in RAM would take 41 days in disk. So why do I bring this
up?
Shared-Nothing: Since the shared-nothing database has sole
ownership of its data—it doesn’t share the data with other
nodes—it can operate in the machine’s local RAM, only writing
infrequently to disk (flushing the data …
Multi-master MySQL, with the MMM management software brings a whole host of new features, and manageability to your MySQL deployments. Run backups, alter tables, perform upgrades all without slowing down your production users.
Read more at Database Journal – Using Multi-master MySQL To Get A Leg Up On Database Performance
Last month, I blogged about a case involving InnoDB, where all threads acting on InnoDB tables completely stuck for about few hours doing nothing; until we found a way to[...]
A short post marks Pythian’s 195th edition of Log Buffer, a blog of blogs encapsulating what’s going on in the world of database administration.
Remember if you find a link or interesting blog post that you think Log Buffer should mention, send a note to the editor at Log Buffer and be sure to include the link, and a short note on why you think that others will want to read it too.
Now on to Log Buffer #195. Alex Gorbachev starts us off with his suggested readings and funnily enough, …
[Read more]The most efficient performance optimization of a SQL statement is to eliminate it. Cary Millsap’s recent Kaleidoscope presentation again highlighted that improving performance is function of code path. Removing code will improve performance.
You may think that it could be hard to eliminate SQL, however when you know every SQL statement that is executed in your code path obvious improvements may be possible. In the sequence SQL was implemented sometimes easy observations can lead to great gains. Let me provide some actual client examples that were discovered by using the MySQL General Log.
Example 1
5 Query SELECT * FROM `artist` 5 Query SELECT * FROM `artist` 5 Query …[Read more]
When working interactively with the MySQL client, you receive feedback of the time the query took to complete to a granularity of 10 ms.
Enabling profiling is a simple way to get more a more accurate timing of running queries. In the following example you can see the time the kernel took to run an explain, the query, and alter, and repeat explain and query.
mysql> set profiling=1; mysql> EXPLAIN SELECT ... mysql> SELECT ... mysql> ALTER ... mysql> show profiles; +----------+------------+------------------------- | Query_ID | Duration | Query +----------+------------+------------------------- | 1 | 0.00036500 | EXPLAIN SELECT sbvi.id a | 2 | 0.00432700 | SELECT sbvi.id as sbvi_i | 3 | 2.83206100 | alter table sbvi drop in | 4 | 0.00047500 | explain SELECT sbvi.id a | 5 | 0.00367100 | SELECT sbvi.id as sbvi_i +----------+------------+-------------------------
More information at …
[Read more]