You have to love all the debating going on over NOSQL -vs- SQL don’t you? With my UC session on choosing the right data storage tools ( does this sound better then SQL-vs-NoSQL?) I have been trying to stay current with the mood of the community so i can make my talk more relevant. Today I was catching up on reading a few blogs posts and I thought I would pass along these two: Pro SQL and Pro NoSQL … these represent the two very different views on this subject. (Note I think there are misleading facts and figures in these that should be flushed out more, but they are a good sample of what I am talking about). …
[Read more]I am giving a talk in a couple of weeks at the 2010 MySQL User Conference that will touch on use cases for NOSQL tools -vs- More relational tools, the talk is entitled “Choosing the Right Tools for the Job, SQL or NOSQL”. While this talk is NOT supposed to be a deep dive into the good, bad, and ugly of these solutions, rather a way to discuss potential use cases for various solutions and where they may make a lot of sense, being me I still felt a need to at least do some minor benchmarking of these solutions. The series of posts I wrote last year over on mysqlperformanceblog.com comparing Tokyo Tyrant to both MySQL and Memcached was fairly popular. In fact the initial set of benchmark scripts I used for that series actually has been put to good use since then testing out …
[Read more]Persistence Smoothie: Blending NoSQL and SQL – see user feedback and comments at http://joind.in/talk/view/1332.
Michael Bleigh from Intridea, high-end Ruby and Ruby on Rails consultants, build apps from start to finish, making it scalable. He’s written a lot of stuff, available at http://github.com/intridea. @mbleigh on twitter
NoSQL is a new way to think about persistence. Most NoSQL systems are not ACID compliant (Atomicity, Consistency, Isolation, Durability).
Generally, most NoSQL systems have:
- Denormalization
- Eventual Consistency
- Schema-Free
- Horizontal Scale
NoSQL tries to scale (more) simply, it is starting to go mainstream – NY …
[Read more]Most of this stuff is not PHP specific, and Python or Ruby or Java or .NET developers can use the tools in this talk.
The session on joind.in, with user comments/feedback, is at http://joind.in/talk/view/1320.
Slides are at http://talks.php.net/show/confoo10
“My name is Rasmus, I’ve been around for a long time. I’ve been doing this web stuff since 1992/1993.”
“Generally performance is not a PHP problem.” Webservers not config’d, no expire headers on images, no favicon.
Tools: Firefox/Firebug extension called YSlow
(developed by yahoo) gives you a grade on your site.
Google has
developed the …
In my last blog post, I showed how we can get some raw
performance information from /proc into the MySQL database using
a LOAD DATA INFILE (LDI) command.
I've modified that LDI call slightly to set the `other` column to
equal the sum total of the CPU counters for those rows which
begin with 'cpu'.
original:
other = IF(@the_key like 'cpu%', NULL , @val1);
new:
other = IF(@the_key like 'cpu%', user + nice + system + idle +
iowait + irq + softirq + steal + guest, @val1);
Top provides a useful output that looks something like the
following:
top - 04:59:14 up 14 days, 3:34, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 216 total, 1 running, 215 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8172108k total, 5115388k used, 3056720k free, 315180k buffers Swap: 2097144k total, 0k …[Read more]
System administrators familiar with the Linux operating system
use the tools in the 'procps' toolset all the time. Tools which
read from /proc include top, iostat, vmstat, sar and others. The
files in /proc contain useful information about the performance
of the system. Most of the files are documented in the Linux kernel documentation. You can also check
man 5 proc.
Most performance monitoring tools invoke other tools like iostat
to collect performance information instead of reading from the
/proc filesytem itself. This begs the question, what can you do
if you don't have access to those tools? Perhaps you are using a
hosted Linux database and have no access to the underlying shell
to execute tools like iostat or top? How could you gather
information about the performance of the actual system without
being allowed to run the tools?
…
InnoDB plugin offers an adaptative compression that is very
interesting for performance.
This compression works at a table level. Like most optimization
techniques it is not black or white.
You have to decide depending on IO patterns / CPU usage / Memory
usage / disks constraints what tables are good candidates for
compression.
I was trying to define a methodology to help decide which tables
to compress to reach performance gains.
I thought I could use MySQL "show status" command or
information_schema tables. Unfortunately MySQL does not offer any
per tables IO statistics.
[...]
Baron makes an excellent point in Why you should ignore MySQL’s key cache hit ratio — ratio is not the same as rate. Furthermore, rate is [often] the important thing to look at.
This is something that, at Pythian, we internalized a long time ago when thinking about MySQL tuning. In fact, mysqltuner 2.0 takes this into account, and the default configuration includes looking at both ratios and rates.
If I told you that your database had a ratio of temporary tables written to disk of 20%, you might think “aha, my database is slow because of a lot of file I/O caused by writing temporary tables to disk!”. However, that 20% ratio may actually mean a rate of 2 per hour — which is most likely …
[Read more]A special extended edition of Tech Messages for 2010-02-20 through 2010-02-24:
-
Gartner EXP Worldwide Survey of Nearly 1,600 CIOs
Shows IT Budgets in 2010 to be at 2005 Levels
Virtualization tops the technology priorities. - Cisco Offers Three-Year, Zero-Percent Financing to U.S. Small and Medium-Sized Businesses -> Cisco News
-
Marc Alff's blog: Performance schema
overview
Really interesting stuff for MySQL developers. - …
In MySQL significant performance improvements can be achieved by the correct use of indexes. It is important to understand different MySQL index implementations and one key improvement on indexes defined on single columns is to use multiple column or more commonly known concatenated indexes.
However it’s also possible to define ineffective indexes. This example shows you how to identify a concatenated index that is ineffective.
CREATE TABLE example ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, a INT UNSIGNED NOT NULL, b INT UNSIGNED NOT NULL, c INT UNSIGNED NOT NULL, d INT UNSIGNED NOT NULL, x VARCHAR(10), y VARCHAR(10), z VARCHAR(10), PRIMARY KEY (id), UNIQUE INDEX (a,b,c,d) ) ENGINE=InnoDB; INSERT INTO example(a,b,c,d) VALUES (1,0,1,1),(1,0,1,2), (1,0,2,3), (1,0,4,5), (2,0,2,1),(2,0,2,2), …[Read more]