Archive

Archive for the ‘General’ Category

PERFORMANCE_SCHEMA hits Prime Time!

January 14th, 2010

I’ve talked about PERFORMANCE_SCHEMA in the past - almost a year ago now.

Back then the feature was just coming together in to something useable, and was on the cusp of moving towards code review. It entered code review, and went around, and around for 9 months, whilst various refinements were made.

Never the less, Marc Alff persevered (much respect!), and yesterday pushed his final merge in to the mysql-next-mr bzr tree. PERFORMANCE_SCHEMA is now awaiting the next milestone release, and will be a part of the next GA release of MySQL!

We have the initial documentation ready:

http://dev.mysql.com/doc/performance-schema/en/index.html

This first round adds the infrastructure to take monitoring of the MySQL Server to the next level, initially adding in instrumentation for sync points (mutexes, rw locks, etc.) and file IO, in the SQL layer, and most of the default storage engines (all those controlled by MySQL/Sun).

Here’s a shout out to the other storage engine developers - we’d love you to start looking at instrumenting your own engines as well. Ask away on the internals@ list - I’m sure Marc will be more than willing to help.

And now that we have the above in - what’s next? It’s a good question! Here’s a list of the major outstanding worklogs:

WL#4674 PERFORMANCE_SCHEMA Setup For Actors
WL#4895 PERFORMANCE_SCHEMA Instrumenting Table IO
WL#4896 PERFORMANCE_SCHEMA Instrumenting Net IO
WL#4878 PERFORMANCE_SCHEMA Trace

Personally, I’m voting for WL#4895 next (well, I’d like to see InnoDB instrumentation too!), but you can vote for what ever you are most interested in via the votes in Worklog as well.

Thanks for all the hard work Marc!

General ,

Scientists say dolphins should be treated as ‘non-human persons’

January 4th, 2010

Being an employee of MySQL (past and present), every time I see something related to dolphins it catches my eye - and I just came across this:

Scientists say dolphins should be treated as ‘non-human persons’

The treatment of dolphins has long been an issue for me, I utterly despise some of the things I have seen, and read about. MySQL’s dolphin - Sakila - has always been seen as a symbol of freedom. This is marred by reality, hopefully this will change:

“The researchers argue that their work shows it is morally unacceptable to keep such intelligent animals in amusement parks or to kill them for food or by accident when fishing. Some 300,000 whales, dolphins and porpoises die in this way each year.”

Some other things in the article also ring true for me, in other ways. :)

“The studies show how dolphins have distinct personalities, a strong sense of self and can think about the future.”

“It has also become clear that they are “cultural” animals, meaning that new types of behaviour can quickly be picked up by one dolphin from another.”

“Other research has shown dolphins can solve difficult problems, while those living in the wild co-operate in ways that imply complex social structures and a high level of emotional sophistication.”

FWIW, I’ve donated to both http://www.orcaweb.org.uk/ and http://www.wdcs.org/ in the past, they are both wonderfully worthy causes.

General ,

MySQL University Session - Customizing MySQL Enterprise Monitor

September 9th, 2009

Just a quick note to let the masses know that I will be hosting a MySQL University session tomorrow, based on the talk that I gave at the MySQL UC in April - Customizing MySQL Enterprise Monitor.

It will be at 14:00 UTC - so if you are at all interested in MEM, and want to know how to bend it towards your needs, then come along! I’ll see you there.

EDIT: OOOPS, it’s 13:00 UTC

General

PERFORMANCE_SCHEMA, Maria and the Tokutek Challenge

February 6th, 2009

As Peter Gulutzan just announced - we’re opening up a “new” worklog that we’ve been working on, Worklog #2360. PERFORMANCE_SCHEMA.

In fact - it’s not “new”, it’s something that has been in the worklog system for a long time, and has had much much much discussion internally between some of the brightest engineers in the group.

The astute among you out there that read my post on the benchmark with Maria for the the tokutek challenge, may have noted this in the configure line that I used:

./configure –prefix=/usr/local/mysql –localstatedir=/data0/mysqldata \
–without-query-cache –with-extra-charsets=complex –with-pic –with-fast-mutexes \
–enable-thread-safe-client –with-readline –with-big-tables –with-zlib-dir=bundled \
–with-plugin-maria –with-plugin-partition –with-plugin-perfschema \
–without-innodb –without-falcon –without-ndbcluster –without-archive-storage-engine \
–without-example-storage-engine –without-federated-storage-engine –without-backhole-storage-engine

I don’t wish to steal Peter’s thunder (he’s worked enormously hard with this project), but I’m going to take this opportunity to post a couple of snippets that I took away from the first benchmark, and let Peter explain them, and the other tables, in his coming posts.

First, let’s check what are the hottest parts of the server where mutexes, IO (there has been more added with Maria in the tree since my tests here, in fact as a result of them I think), conditions or rw locks etc. are concerned whilst I was running the benchmark:

mysql> SELECT *
    ->   FROM events_waits_summary_by_event_name
    ->  WHERE sum_timer_wait != 0
    -> ORDER BY sum_timer_wait DESC;
+----------------------------------------------------------+------------+----------------+----------------+----------------+----------------+
| EVENT_NAME                                               | COUNT_WAIT | SUM_TIMER_WAIT | MIN_TIMER_WAIT | AVG_TIMER_WAIT | MAX_TIMER_WAIT |
+----------------------------------------------------------+------------+----------------+----------------+----------------+----------------+
| wait/synch/mutex/maria/PAGECACHE::cache_lock             | 2147483647 | 13466583113436 |            138 |           1678 |      544893048 |
| wait/synch/cond/maria/translog_d::log_flush              |       5769 |  2961643469364 |          48942 |      513372069 |     4294177986 |
| wait/synch/cond/mysys/my_thread_var::suspend             |        776 |   805743293206 |          12936 |     1038328986 |     4283692164 |
| wait/synch/mutex/maria/translog_buffer::mutex            | 2147483647 |   577561613332 |            138 |            234 |     4231638106 |
| wait/synch/mutex/maria/translog_d:file_header            | 2147483647 |   422453242530 |            138 |            171 |       10497066 |
| wait/synch/mutex/maria/MARIA_FILE_BITMAP::bitmap_lock    |  735984803 |   169563172188 |            144 |            230 |     1244470326 |
| wait/synch/rwlock/maria/MARIA_KEYDEF::root_lock          |  248027518 |    65520201900 |            162 |            264 |       10019208 |
| wait/io/file/sql/FRM                                     |        801 |    12940295718 |            150 |       16155175 |      515501940 |
| wait/synch/mutex/maria/MARIA_SHARE::intern_lock          |    3854083 |     4986469182 |            150 |           1293 |     2181619680 |
| wait/synch/mutex/sql/LOCK_global_system_variables        |    5208428 |      863439342 |            144 |            165 |         559086 |
| wait/synch/mutex/maria/translog_d::sent_to_disk          |     735999 |      508699002 |            150 |            691 |        1163784 |
| wait/synch/rwlock/maria/translog_d::open_files           |     491046 |      434394126 |            168 |            884 |         473808 |
| wait/synch/mutex/maria/MARIA_SHARE::key_del_lock         |    1665267 |      429800430 |            150 |            258 |        1077558 |
| wait/io/file/maria/Control                               |         92 |      429294504 |          12552 |        4666244 |       31523556 |
| wait/synch/mutex/mysys/LOCK_alarm                        |     882996 |      350870472 |            150 |            397 |         479982 |
| wait/synch/mutex/sql/LOCK_mdl                            |     758523 |      312468192 |            150 |            411 |         147180 |
| wait/synch/mutex/sql/LOCK_open                           |     736908 |      308840712 |            150 |            419 |         475176 |
| wait/synch/mutex/sql/LOCK_thread_count                   |    1036629 |      244505298 |            144 |            235 |         375186 |
| wait/synch/mutex/maria/translog_d::log_flush             |     565581 |      227091810 |            138 |            401 |         177606 |
| wait/synch/mutex/sql/LOCK_global_read_lock               |     490683 |      198332490 |            144 |            404 |         476472 |
| wait/synch/mutex/sql/LOCK_plugin                         |     588674 |      158860836 |            144 |            269 |          56688 |
| wait/synch/rwlock/sql/LOCK_grant                         |     267378 |      157255554 |            180 |            588 |        2143872 |
| wait/synch/mutex/maria/TRN::state_lock                   |     735985 |      147520044 |            150 |            200 |         154188 |
| wait/synch/mutex/maria/translog_d::dirty_buffer_mask     |     490790 |      110804592 |            162 |            225 |         135702 |
| wait/synch/mutex/maria/LOCK_trn_list                     |     490678 |      106710882 |            156 |            217 |         474672 |
| wait/synch/mutex/mysys/THD_LOCK_mutex                    |     490848 |       97715760 |            162 |            199 |          65340 |
| wait/synch/cond/maria/translog_b::waiting_filling_buffer |          5 |       20083674 |        1284888 |        4016734 |        6963702 |
| wait/synch/mutex/mysys/THR_LOCK_lock                     |      43560 |       19417026 |            162 |            445 |          25980 |
| wait/io/file/maria/DataFile                              |         20 |       14346036 |           4596 |         717301 |       14193714 |
| wait/synch/mutex/mysys/BITMAP_mutex                      |      43538 |       11462268 |            156 |            263 |          16278 |
| wait/synch/mutex/sql/LOCK_status                         |      21718 |       10181124 |            198 |            468 |           7518 |
| wait/synch/mutex/sql/LOCK_active_mi                      |      43440 |        9080496 |            180 |            209 |          17550 |
| wait/synch/mutex/sql/LOCK_event_metadata                 |      10804 |        4669272 |            210 |            432 |           8166 |
| wait/synch/mutex/sql/RLI_data_lock                       |      21718 |        4548996 |            180 |            209 |          17376 |
| wait/synch/rwlock/sql/LOCK_system_variables_hash         |      10866 |        4383222 |            186 |            403 |           7410 |
| wait/synch/mutex/sql/LOCK_prepared_stmt_count            |      10877 |        2389752 |            186 |            219 |          14400 |
| wait/synch/mutex/mysys/THR_LOCK_open                     |       1260 |         451236 |            156 |            358 |           2622 |
| wait/io/file/maria/KeyFile                               |         50 |         317220 |           2676 |           6344 |          30624 |
| wait/io/file/sql/ERRMSG                                  |          3 |         115410 |          13980 |          38470 |          81966 |
| wait/synch/mutex/sql/hash_filo::LOCK                     |        557 |         105720 |            150 |            189 |            654 |
| wait/io/file/mysys/charset                               |          1 |          46644 |          46644 |          46644 |          46644 |
| wait/io/file/sql/DbOpt                                   |          1 |          40734 |          40734 |          40734 |          40734 |
| wait/synch/mutex/mysys/KEY_CACHE::cache_lock             |        158 |          32664 |            150 |            206 |            516 |
| wait/io/file/sql/pid                                     |          1 |          32382 |          32382 |          32382 |          32382 |
| wait/synch/mutex/mysys/my_thread_var::mutex              |        115 |          31194 |            162 |            271 |            834 |
| wait/synch/mutex/mysys/THR_LOCK_charset                  |        157 |          28620 |            150 |            182 |            528 |
| wait/synch/mutex/mysys/THR_LOCK_threads                  |         22 |          25920 |            498 |           1178 |           5838 |
| wait/synch/mutex/myisam/MYISAM_SHARE::intern_lock        |         82 |          20502 |            150 |            250 |            480 |
| wait/synch/rwlock/myisam/MYISAM_SHARE::key_root_lock     |         66 |          19386 |            174 |            293 |            900 |
| wait/synch/mutex/maria/THR_LOCK_maria                    |         42 |          17574 |            204 |            418 |            798 |
| wait/synch/mutex/sql/LOCK_connection_count               |         39 |           9258 |            192 |            237 |            468 |
| wait/synch/mutex/sql/THR_LOCK_DDL_blocker                |         22 |           5664 |            156 |            257 |            534 |
| wait/synch/mutex/sql/LOCK_xid_cache                      |         18 |           5178 |            234 |            287 |            456 |
| wait/synch/mutex/sql/LOCK_delete                         |         18 |           4932 |            192 |            274 |            534 |
| wait/synch/mutex/sql/LOCK_ha_data                        |         12 |           3954 |            222 |            329 |            546 |
| wait/synch/mutex/sql/THR_LOCK_DDL_is_blocked             |         11 |           3294 |            210 |            299 |            528 |
| wait/synch/mutex/maria/MARIA_SHARE::close_lock           |         15 |           3114 |            150 |            207 |            234 |
| wait/synch/mutex/sql/LOCK_lock_db                        |         10 |           3036 |            198 |            303 |            444 |
| wait/synch/mutex/mysys/THR_LOCK_myisam                   |          3 |           1560 |            402 |            520 |            708 |
| wait/synch/mutex/sql/LOCK_user_conn                      |          2 |            696 |            240 |            348 |            456 |
| wait/synch/mutex/sql/LOCK_mysql_create_db                |          2 |            522 |            258 |            261 |            264 |
+----------------------------------------------------------+------------+----------------+----------------+----------------+----------------+
61 rows IN SET (0.00 sec)

The times that are being recorded above are actually CPU cycles, if you know the power of your CPUs you could convert those to microseconds fairly easily - or you can tell the PERFORMANCE_SCHEMA to record in other formats too.

mysql> SELECT * FROM setup_timers;
+------+------------+
| NAME | TIMER_NAME |
+------+------------+
| Wait | CYCLE      |
+------+------------+
1 row IN SET (0.00 sec)

Next, let’s take a look at what the thread that was inserting the 1 billion rows had been doing. Yes folks, this takes SHOW PROFILES and SHOW ENGINE INNODB MUTEX to a whole different level (it will pretty much make them defunct, imho, if we can get InnoDB using this instrumentation).

mysql> SELECT *
    ->   FROM events_waits_summary_by_thread_by_event_name
    ->  WHERE thread_id = 12
    ->    AND sum_timer_wait != 0
    -> ORDER BY sum_timer_wait DESC;
+-----------+----------------------------------------------------------+------------+----------------+----------------+----------------+----------------+
| THREAD_ID | EVENT_NAME                                               | COUNT_WAIT | SUM_TIMER_WAIT | MIN_TIMER_WAIT | AVG_TIMER_WAIT | MAX_TIMER_WAIT |
+-----------+----------------------------------------------------------+------------+----------------+----------------+----------------+----------------+
|        12 | wait/synch/mutex/maria/PAGECACHE::cache_lock             | 2147483647 | 13461313032030 |            138 |           1684 |      544893048 |
|        12 | wait/synch/cond/maria/translog_d::log_flush              |       5758 |  2961367306584 |          48942 |      514304846 |     4294177986 |
|        12 | wait/synch/cond/mysys/my_thread_var::suspend             |        769 |   805570319284 |          12936 |     1047555681 |     4283692164 |
|        12 | wait/synch/mutex/maria/translog_buffer::mutex            | 2147483647 |   575354215426 |            138 |            234 |     4231638106 |
|        12 | wait/synch/mutex/maria/translog_d:file_header            | 2147483647 |   420424031916 |            138 |            171 |       10497066 |
|        12 | wait/synch/mutex/maria/MARIA_FILE_BITMAP::bitmap_lock    |  732428925 |   168888242736 |            144 |            230 |     1244470326 |
|        12 | wait/synch/rwlock/maria/MARIA_KEYDEF::root_lock          |  246828873 |    65195270814 |            162 |            264 |       10019208 |
|        12 | wait/synch/mutex/maria/MARIA_SHARE::intern_lock          |    3836359 |     4981866294 |            150 |           1298 |     2181619680 |
|        12 | wait/synch/mutex/maria/translog_d::sent_to_disk          |     732420 |      506173524 |            150 |            691 |        1163784 |
|        12 | wait/synch/rwlock/maria/translog_d::open_files           |     488660 |      432319110 |            168 |            884 |         473808 |
|        12 | wait/io/file/maria/Control                               |         92 |      429294504 |          12552 |        4666244 |       31523556 |
|        12 | wait/synch/mutex/maria/MARIA_SHARE::key_del_lock         |    1658211 |      428136198 |            150 |            258 |        1077558 |
|        12 | wait/synch/mutex/mysys/LOCK_alarm                        |     834892 |      311987064 |            150 |            373 |         479982 |
|        12 | wait/synch/mutex/sql/LOCK_open                           |     732430 |      307217022 |            150 |            419 |         475176 |
|        12 | wait/synch/mutex/sql/LOCK_mdl                            |     732432 |      299536968 |            162 |            408 |         147180 |
|        12 | wait/synch/mutex/sql/LOCK_thread_count                   |     976577 |      230754018 |            144 |            236 |         375186 |
|        12 | wait/synch/mutex/maria/translog_d::log_flush             |     563195 |      226177674 |            138 |            401 |         177606 |
|        12 | wait/synch/mutex/sql/LOCK_global_read_lock               |     488287 |      197541498 |            180 |            404 |         476472 |
|        12 | wait/synch/mutex/maria/TRN::state_lock                   |     732430 |      146788518 |            150 |            200 |         154188 |
|        12 | wait/synch/rwlock/sql/LOCK_grant                         |     244146 |      137635878 |            180 |            563 |        2143872 |
|        12 | wait/synch/mutex/sql/LOCK_plugin                         |     488290 |      136693146 |            150 |            279 |          56688 |
|        12 | wait/synch/mutex/maria/translog_d::dirty_buffer_mask     |     488404 |      110289804 |            162 |            225 |         135702 |
|        12 | wait/synch/mutex/maria/LOCK_trn_list                     |     488288 |      106188246 |            156 |            217 |         474672 |
|        12 | wait/synch/mutex/mysys/THD_LOCK_mutex                    |     488287 |       97045002 |            180 |            198 |          65340 |
|        12 | wait/synch/cond/maria/translog_b::waiting_filling_buffer |          5 |       20083674 |        1284888 |        4016734 |        6963702 |
|        12 | wait/synch/mutex/mysys/THR_LOCK_open                     |         92 |         114222 |            414 |           1241 |           2622 |
|        12 | wait/io/file/maria/KeyFile                               |          3 |          20400 |           4374 |           6800 |           9606 |
|        12 | wait/synch/rwlock/sql/LOCK_system_variables_hash         |          3 |           1752 |            288 |            584 |            750 |
|        12 | wait/synch/mutex/mysys/THR_LOCK_threads                  |          1 |            852 |            852 |            852 |            852 |
|        12 | wait/synch/mutex/sql/LOCK_global_system_variables        |          2 |            498 |            234 |            249 |            264 |
|        12 | wait/synch/mutex/sql/LOCK_ha_data                        |          1 |            414 |            414 |            414 |            414 |
|        12 | wait/synch/mutex/sql/hash_filo::LOCK                     |          1 |            228 |            228 |            228 |            228 |
|        12 | wait/synch/mutex/sql/LOCK_connection_count               |          1 |            204 |            204 |            204 |            204 |
+-----------+----------------------------------------------------------+------------+----------------+----------------+----------------+----------------+
33 rows IN SET (0.00 sec)

Bonus points to those that spot the obvious “bug” in the above! :)

There is so much more to this worklog, there’s a number more tables, there’s a lot more information, and a lot more ways to look at it. The future of monitoring MySQL just got much brighter.

Stay tuned! I’m sure Peter is itching to spread more information!

General , ,

Speaking at the MySQL Conference 2009

February 5th, 2009

A little late to post (I’ve known a while), but I thought I’d plug my talk for any interested readers out there, that are going to the conference, and use MEM!

I’m talking about Extending MySQL Enterprise Monitor with Custom Advisors, Graphs and Data Collections.

I’ve had the pleasure of working with the team that writes the MEM software (the “Enterprise Tools” team, internally and lovingly known as the “Merlin Team“, the codename that has survived various renames of the product!) for a little over 3 years now. I can’t say I was there at it’s conception, but I started working with them before the initial release of the product, and have watched (and I like to think helped shape) the product very closely whilst being the “Support Coordinator” for the Support Team for MEM. It’s a great product already, but we have many ideas, it’s going to be an awesome product of the future.

Along the way I’ve helped to write many of the graphs and rules that are released for the MySQL Enterprise Monitor within the default Advisor bundles (along with Andy Bang, one of the original team with the concept) and hope to give MEM users some insights in to how they can extend MEM to suit their own needs.

For example, many users have asked for us to add disk space monitoring - we’re working towards making it more seamless for the next releases (2.0 has taken an interim step for this) - but little know that you can already extend the Monitor to do this within the new 2.0 release:

MEM Disk Monitoring

MEM Disk Monitoring

Come to the talk to find out how - and more, like collecting your own data points (from various sources), graphing them and/or alerting on them! :)

General

Maria trundles the tokutek challenge

February 4th, 2009

So I saw the tokutek challenge, and wondered to myself how Maria would get along with it. I duly downloaded a 6.0 tree, and the iiBench code, tinkered with it to make it actually build, and fired things up.

I watched it closely, for about a day, then got bored and forgot about it. I remembered today that I should take a look!

CPU Usage (Quad Core)

CPU Usage (Quad Core)

Average rows per second inserted

Average rows per second inserted

Load Averages

Load Averages

You can see, in just over a day the IO load became too heavy to process efficiently.

MySQL was built like this:

./configure –prefix=/usr/local/mysql –localstatedir=/data0/mysqldata \
–without-query-cache –with-extra-charsets=complex –with-pic –with-fast-mutexes \
–enable-thread-safe-client –with-readline –with-big-tables –with-zlib-dir=bundled \
–with-plugin-maria –with-plugin-partition –with-plugin-perfschema \
–without-innodb –without-falcon –without-ndbcluster –without-archive-storage-engine \
–without-example-storage-engine –without-federated-storage-engine –without-backhole-storage-engine

I tinkered with Maria right from the start though, I wanted to see what a longer checkpoint interval would give, so increased it to every 5 minutes - obviously this doesn’t seem great. :) I also wanted to use the same page size as InnoDB out of morbid curiosity. Here’s the my.cnf:

[mysqld]
basedir = /usr/local/mysql
datadir = /data0/mysqldata
log-error = /usr/local/mysql/logs/error.log

maria-block-size = 16384
maria_log_dir_path = /usr/local/mysql/logs
maria_page_checksum = 0
maria_pagecache_buffer_size = 12G
maria-checkpoint-interval = 300

The tables were defined as ENGINE = Maria - i.e TRANSACTIONAL = 1 (with crash recovery) by default.

I added a new custom graph for MEM, to track how the Maria Page Cache gets utilized:

Maria Page Cache Usage

Maria Page Cache Usage

I’ll be making a couple more for Maria as well - including the easy read and write physcial/logical requests from SHOW GLOBAL STATUS (to be released with MEM once Maria is ready, let me know if you want the custom graphs before hand).

The server is RHEL5, Quad Xeon, with 16G RAM, and a 4 disk 10krpm RAID 10 array for the /data0 mountpoint (although using ext3, along with the noop scheduler). Taking a look at iostat when I came back to it, it’s clear that this was my barrier (well, the io wait in the CPU graph is a pretty good indicator as well eh!):

avg-cpu: %user %nice %system %iowait %steal %idle
1.25 0.00 0.00 23.75 0.00 75.00

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
cciss/c0d1 0.00 7.00 9.00 813.00 288.00 6592.00 8.37 142.09 177.35 1.22 100.10

avg-cpu: %user %nice %system %iowait %steal %idle
4.00 0.00 0.25 20.75 0.00 75.00

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.00 125.00 0.00 8.00 0.00 1064.00 133.00 0.05 6.25 4.38 3.50
cciss/c0d1 0.00 4.00 7.00 869.00 224.00 7008.00 8.26 142.00 163.25 1.14 100.10

avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 0.25 24.50 0.00 75.00

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
cciss/c0d1 0.00 0.00 8.00 880.00 256.00 7040.00 8.22 143.06 162.75 1.13 100.10

Maria does not make use of bulk_insert_buffer_size, unfortunately, when TRANSACTIONAL = 1. It does when TRANSACTIONAL = 0 however. It also doesn’t use something like InnoDB’s Insert Buffer, so it’s clear that there is probably some way to go when it comes to bulk inserts within Maria for the TRANSACTIONAL mode.

Maria does support concurrent inserts with TRANSACTIONAL = 1, however this is disabled when the table has an AUTO_INCREMENT, (or FULLTEXT/GIS indexes) - so that makes this benchmark difficult from that respect too.

I’d like to restart this benchmark in a few ways:

TRANSACTIONAL = 0, single threaded, default checkpoint interval and block size, default auto_inc

The IO overhead for the log files (on cciss/c0d0 above) was not huge, so it will be interesting to see how this affects things (I’ll report back). This should show how just the new page cache works out as well.

TRANSACTIONAL = 1, 4 threads, default checkpoint interval and block size, default auto_inc

There’s only 4 CPUs on the system, so this will certainly max those out - but I’d like to see the performance differences with filling the cache as well, with concurrent INSERT still disabled.

TRANSACTIONAL = 1, 4 threads, default checkpoint interval and block size, synthetic auto_inc

This would really show how quickly concurrent inserts could start filling the cache concurrently. Sadly I think once the cache is full we will continue to see issues at least for now though.

Maybe I’ll get to those in my copious free time, but thought I’d at least post some initial findings on a “benchmark gone wrong” for amusement factor. :)

General , , ,

Statpack Version 2

June 19th, 2007

I’ve finally gotten around to adding the last little things that I wanted to do to version 2 of Statpack - my python script for aggregating SHOW [GLOBAL] STATUS output.

Now it connects to a running instance, and allows you to gather statistics from there to generate reports.

Here are the options it supports:

[markleith@medusa:~/Development/statpack/statpack-v2] $ ./statpack.py

Error: No arguments supplied
usage: ./statpack.py [list of arguments]

Non-interactive mode (aggregate txt files containing SHOW STATUS snapshots):

-f –files List of statistics files to aggregate (–files=stat1.txt[, stat2.txt..])
Argument must be first within list of arguments, on it’s own

Interactive mode (connect to running MySQL server for SHOW STATUS snapshots):

-h –host Host for MySQL server to connect to in interactive mode
-P –port Port the MySQL server is running on
-S –socket UNIX domain socket to use (instead of -h and -P)
-u –user User to connect to the MySQL server with
-p –password Password for the user
-d –defaults-file Defaults file to read options from (reads [client] group by default)
-i –interval Length of each collection interval
-c –interval-count Count of intervals to collect and aggregate
-s –status-file File to output raw SHOW STATUS data to

All modes:

-r --report-file File to output generated report(s) to

As you can see - I’ve also added in the option to output the report to a file - with –report-file and if getting statistics form a running server, dumping the full output of SHOW STATUS to a file as well, for further analysis later - with –status-file. Each of these options expects a file name (or full path and name if not to the working directory).

I’ve tidied up the output formats for the ‘byte’ based values based, and added in a thread cache section, and changed the locale setting to the machines default, based on some feedback from Ronald Bradford.

Finally - I incorporated a patch from David Lowless - which allows Statpack to run on older versions of Python as well (by not using a fill character within center() or rjust()) - thanks David!

Here’s an up to date example:

====================================================================================================
Uptime: 19 hours 22 mins Snapshot Period 9: 0 minute interval
====================================================================================================
Variable Delta/Percentage Per Second Total
====================================================================================================
Database Activity
====================================================================================================

Threads Connected: 0 8
Threads Running: 0 2
Questions: 45705 1523.50 1001384
Bytes Recieved: 8K 284B 79M
Bytes Sent: 6K 236B 6M
Aborted Clients: 0 0.00 2
Aborted Connects: 0 0.00 0

====================================================================================================
Statement Activity
====================================================================================================

SELECT: 0 0.00 811 (0.10%)
INSERT: 9 0.30 436 (0.05%)
UPDATE: 881 29.37 20152 (2.51%)
DELETE: 0 0.00 149 (0.02%)
REPLACE: 0 0.00 0 (0.00%)
INSERT … SELECT: 881 29.37 19900 (2.48%)
REPLACE … SELECT: 35147 1171.57 761532 (94.84%)
Multi UPDATE: 0 0.00 0 (0.00%)
Multi DELETE: 0 0.00 0 (0.00%)
COMMIT: 0 0.00 12 (0.00%)
ROLLBACK: 0 0.00 0 (0.00%)

====================================================================================================
Prepared Statements
====================================================================================================

Prepared Statement Count: Status variable not available in your MySQL version
PREPARE: 0 0.00 1526
EXECUTE: 0 0.00 763
DEALLOCATE PREPARE: 0 0.00 1526
Fetch Roundtrips: 0 0.00 0
Send Long Data: 0 0.00 0

====================================================================================================
Admin Commands
====================================================================================================

KILL: 0 0.00 0
FLUSH: 0 0.00 0
ANALYZE TABLE: 0 0.00 0
OPTIMIZE TABLE: 0 0.00 0
CHECK TABLE: 0 0.00 0
REPAIR TABLE: 0 0.00 0

====================================================================================================
Thread Cache
====================================================================================================

Thread Efficiency: 100.00%
Connections: 0 0.00 386
Threads Created: 0 0.00 206

====================================================================================================
Table Cache
====================================================================================================

table_cache Efficiency: 75.74%
Open Tables: 0 0.00 128
Opened Tables: 0 0.00 168

====================================================================================================
MyISAM Key Cache
====================================================================================================

Cache Read Efficiency: 99.95%
Cache Write Efficiency: 80.11%
Memory Used: 360B 8K
Memory Free: -563B 96K
Key Reads: 563 18.77 16051
Key Read Requests: 1998473 66615.77 33089888
Key Writes: 10433 347.77 193650
Key Write Requests: 39790 1326.33 973579
Blocks Not Flushed: 881 29.37 1231

====================================================================================================
InnoDB Buffer Pool
====================================================================================================

Buffer Pool Read Efficiency: 82.50%
Memory Total: 0B 8M
Memory Free: 0B 7M
Memory Data: 0B 448K
Memory Dirty: 0B 0B
Data Read: 0B 2M
Data Written: 0B 1K
Buffer Pool Reads: 0 0.00 21
Buffer Pool Read Requests: 0 0.00 119
Buffer Pool Write Requests: 0 0.00 0

====================================================================================================
InnoDB Log Files
====================================================================================================

Log Data Written: 0B 512B
Log Writes: 0 0.00 1
Log Write Requests: 0 0.00 0
Log Waits: 0 0.00 0

====================================================================================================
Query Cache
====================================================================================================

QCache Hits / SELECT: 0.00%
QCache Hit/Qcache Insert: 0.00%
Qcache Hits/Invalidations: 0.00%
SELECTs: 0 0.00 811
Query Cache Hits: 0 0.00 0
Query Cache Inserts: 0 0.00 0
Queries Not Cached: 0 0.00 0
Cache Low Memory Prunes: 0 0.00 0
Total Cache Blocks: 0 0.00 0
Queries In Cache: 0 0.00 0
Cache Free Blocks: 0 0.00 0

====================================================================================================
Index Usage
====================================================================================================

Index Efficiency: 98.52%
Full Index Scans: 0 0.00 155
Full Table Scans: 1 0.03 790
Full Join Scans: 0 0.00 0
Handler_read_first: 0 0.00 155 (0.00%)
Handler_read_key: 101996 3399.87 2150257 (3.22%)
Handler_read_next: 5035431 167847.70 63675799 (95.30%)
Handler_read_prev: 0 0.00 0 (0.00%)
Handler_read_rnd: 32139 1071.30 751630 (1.12%)
Handler_read_rnd_next: 1985 66.17 238846 (0.36%)

====================================================================================================
Temporary Space
====================================================================================================

tmp_table_size Efficiency: 100.00%
Memory Temp Tables: 880 29.33 19825
Disk Temp Tables: 0 0.00 0
Temp Files: 0 0.00 5

====================================================================================================
Lock Contention
====================================================================================================

Percent of Locks Waited: 0.00%
Table Locks Waited: 0 0.00 0
Table Locks Immediate: 891 29.70 27668

====================================================================================================
Sorting
====================================================================================================

Rows Sorted: 879 29.30 19035
Sort Range: 0 0.00 0
Sort Scan: 879 29.30 19035
Sort Merge Passes: 0 0.00 0
Full Range Joins: 0 0.00 0

The script is available here: http://www.markleith.co.uk/dl/statpack-v2.tar.gz

General, MySQL ,

Google Patents

May 19th, 2007

So I came across Google Patents the other day and thought that it was a pretty cool idea! Searching for whether a patent already exists had been a pretty hard job in the past, so having a readily available resource such as Google is a fantastic step forwards.

Especially in light of the recent Microsoft ‘FUD’.

Here’s a patent I came across whilst browsing around the various database related patents that exist out there:

http://www.google.com/patents?id=zLsYAAAAEBAJ&dq

Electronic shopping and merchandising system

Abstract
The present invention provides a merchant system for online shopping and merchandising. The merchant system architecture provides great flexibility for a merchant to adapt the merchant system to their existing business practices, promotions and databases. The merchant system includes a dynamic page generator, a configurable order processing module and a database module capable of retrieving data from the database without regard to its schema. The present invention enables merchants to create electronic orders which are easily adaptable for different sales situations. The order processing module includes multiple configurable stages to process a merchant’s electronic orders. The merchant system is capable of generating pages dynamically using templates having embedded directives. The database module and the dynamic page generator allow merchants to modify their databases and page displays without having to reengineer the merchant system.

Wow, it looks to me like Microsoft patented the Online shopping cart! There’s a lot of interesting patents that Microsoft seem to have taken out. Google makes searching for these relatively easily.

There’s some great other patents as well out there too:

The OUIJA-BOABD
The FLYING-MACHINE

And every geek’s favourite!

The POCKET PROTECTOR

General, MySQL

Aggregating SHOW STATUS Output

May 18th, 2007

When I first joined MySQL one of the things that was evident was the Support Engineers spent quite some time with customers issues that were focused on performance tuning. Performance tuning issues generally start with a engineer requesting a bunch of information from the customer such as:

  • SHOW GLOBAL VARIABLES
  • SHOW GLOBAL STATUS (a number of times, to give us some rate information)
  • SHOW FULL PROCESSLIST
  • SHOW INNODB STATUS (if InnoDB is widely being used)
  • vmstat output for a number of short periods
  • iostat -dx output for a number of short periods

A lot of this output is pretty easy to go through when you know what you are looking for. However where we spend a lot of our time is looking through the SHOW GLOBAL STATUS output - trying to piece together the rates of change etc. so that we can get more insight in to what is hurting the database.

I also had never used Python - and wanted to give it a try - and said some time early last year “One of these days I’m going to create a Python script that aggregates all of this stuff for us“. Well, towards the end of last year (and with some extra stuff added early this year), I actually went ahead and took the dive and created such a script. Now, I know there are some scripts out there that already do some of this from other people (such as the pretty good one put together over on hackmysql.com) - however these are scripts that all connect to a running database, and get stats to aggregate in that way. This really didn’t help us in the Support Group - as we needed customers to send us stats in files generally (although sometimes we do connect and troubleshoot that way). It also didn’t serve the purpose of my wanting to try Python :)

I’ve reached a point with this script now where I’m ready to shove it out to the world to use as they wish, and request feedback on it. The current version I am releasing here is actually a little behind - I’m working on an ‘interactive’ version as well (more like mysqlreport et al), but more on that later.

Here’s a sample of what the report spits out now:

[markleith@medusa:~/Development] $ ./statpack.py statsfiles/mysql_collect_200701071916.txt statsfiles/mysql_collect_200701071921.txt

Number of Snapshots: 2

====================================================================================================
Uptime: 12 hours 29 min Snapshot Period 1: 4 minute interval
====================================================================================================
Variable Delta/Percentage Per Second Total
====================================================================================================

=========================================Database Activity==========================================

Connections: 12,193 43.70 1,496,977
Threads Connected: 9 432
Threads Running: 26 284
Questions: 1,235,947 4,429.92 159,441,275
Bytes Recieved: 771,889,505 2,766,629.05 99,484,958,519
Bytes Sent: 4,531,361,061 16,241,437.49 575,614,342,973
Aborted Clients: 0 0.00 368
Aborted Connects: 0 0.00 1

=========================================Statement Activity=========================================

SELECT: 197,280 707.10 26,224,157
INSERT: 13,061 46.81 1,568,744
UPDATE: 14,932 53.52 1,774,077
DELETE: 12,848 46.05 1,585,598
REPLACE: 0 0.00 0
INSERT … SELECT: 0 0.00 0
REPLACE … SELECT: 0 0.00 0
Multi UPDATE: 0 0.00 0
Multi DELETE: 0 0.00 0
COMMIT: 21 0.08 2,459
ROLLBACK: 4 0.01 447

========================================Prepared Statements=========================================

Prepared Statement Count: Status variable not available in your MySQL version
PREPARE: 0 0.00 0
EXECUTE: 0 0.00 0
DEALLOCATE PREPARE: 0 0.00 0
Fetch Roundtrips: 0 0.00 0
Send Long Data: 0 0.00 0

===========================================Admin Commands===========================================

KILL: 0 0.00 0
FLUSH: 0 0.00 0
ANALYZE TABLE: 0 0.00 0
OPTIMIZE TABLE: 0 0.00 0
CHECK TABLE: 0 0.00 0
REPAIR TABLE: 0 0.00 0

==========================================Temporary Space===========================================

tmp_table_size Efficiency: 11.64%
Memory Temp Tables: 6,599 23.65 978,895
Disk Temp Tables: 5,912 21.19 864,973
Temp Files: 0 0.00 5

==========================================MyISAM Key Cache==========================================

Cache Read Efficiency: 99.98%
Cache Write Efficiency: 51.94%
Memory Used: 64Kb 57Mb
Memory Free: -64Kb 780Mb
Key Reads: 76 0.27 60,426
Key Read Requests: 2,241,530 8,034.16 283,675,567
Key Writes: 5,399 19.35 863,132
Key Write Requests: 15,455 55.39 1,795,774
Blocks Not Flushed: 12 0.04 15

============================================Table Cache=============================================

table_cache Efficiency: 99.49%
Open Tables: 0 0.00 1,357
Opened Tables: 0 0.00 1,363

=========================================InnoDB Buffer Pool=========================================

Buffer Pool Read Efficiency: 100.00%
Memory Total: 0Kb 1,024Mb
Memory Free: -1,280Kb 984Mb
Memory Data: 1,264Kb 38Mb
Memory Dirty: -592Kb 0Mb
Data Read: 1,232Kb 37Mb
Data Written: 16,665Kb 1,793Mb
Buffer Pool Reads: 76 0.27 1,178
Buffer Pool Read Requests: 460,617 1,650.96 66,374,804
Buffer Pool Write Requests: 1,584 5.68 183,697

==========================================InnoDB Log Files==========================================

Log Data Written: 114Kb 16Mb
Log Writes: 57 0.20 7,124
Log Write Requests: 182 0.65 32,096
Log Waits: 0 0.00 0

============================================Query Cache=============================================

QCache Hits / SELECT: 81.76%
QCache Hit/Qcache Insert: 83.71%
Qcache Hits/Invalidations: 23.00%
SELECTs: 197,280 707.10 26,224,157
Query Cache Hits: 913,101 3,272.76 117,563,266
Query Cache Inserts: 164,677 590.24 22,869,761
Queries Not Cached: 32,566 116.72 3,356,727
Cache Low Memory Prunes: 151,782 544.02 19,606,315
Total Cache Blocks: -1,126 -4.04 301,180
Queries In Cache: -280 -1.00 123,023
Cache Free Blocks: -539 -1.93 47,065

============================================Index Usage=============================================

Index Efficiency: 90.96%
Full Index Scans: 7,652 27.43 875,018
Full Table Scans: 30 0.11 4,289
Full Join Scans: 0 0.00 0
Handler_read_first: 7,652 27.43 875,018 (0.21%)
Handler_read_key: 841,736 3,016.97 116,933,614 (27.52%)
Handler_read_next: 2,569,564 9,209.91 268,699,389 (63.24%)
Handler_read_prev: 0 0.00 0 (0.00%)
Handler_read_rnd: 97,563 349.69 13,331,811 (3.14%)
Handler_read_rnd_next: 43,357 155.40 25,075,543 (5.90%)

==========================================Lock Contention===========================================

Percent of Locks Waited: 13.08%
Table Locks Waited: 47,482 170.19 4,394,859
Table Locks Immediate: 209,882 752.27 29,201,590

==============================================Sorting===============================================

Rows Sorted: 90,014 322.63 12,448,923
Sort Range: 32,914 117.97 4,372,453
Sort Scan: 6,279 22.51 924,212
Sort Merge Passes: 0 0.00 0
Full Range Joins: 0 0.00 0

Input files can contain many snapshots of SHOW STATUS within the same file, and you can also pass in any number of files in chronological order (or a mixture of the two). StatPack also understands status files with both “batch” and “non-batch” outputs. That is to say it currently can parse files of both of the following formats:

[markleith@medusa:~/Development] $ mysql -u root -e “SHOW STATUS”
+———————————–+———-+
| Variable_name | Value |
+———————————–+———-+
| Aborted_clients | 16 |
| Aborted_connects | 0 |
| Binlog_cache_disk_use | 0 |

[markleith@medusa:~/Development] $ mysql -u root -B -e “SHOW STATUS”
Variable_name Value
Aborted_clients 16
Aborted_connects 0
Binlog_cache_disk_use 0

Currently it does not support the “\G” output.

There will be one report for each period reported within the “Number of Snapshots” section (less one, as initially we need 2 reports to start aggregation). I.e if it reports 4 snapshot periods, you will get 3 reports based on the differences between each snapshot.

Now, as I’ve learned a little more a Python I’ve realized I’ve done some things that could…. be done better… :) I’m working ‘Version 2′, which is changing a fair bit of the way things are done, and also adds in connecting to a running server to generate a report from as well. Currently this is what it supports:

[markleith@medusa:~/Development] $ ./statpack-interactive.py

Error: No arguments supplied
usage: ./statpack-interactive.py [list of arguments]

Non-interactive mode (aggregate txt files containing SHOW STATUS snapshots):

-f –files List of statistics files to aggregate (–files=stat1.txt[, stat2.txt..])
Argument must be first within list of arguments, on it’s own

Interactive mode (connect to running MySQL server for SHOW STATUS snapshots):

-h –host Host for MySQL server to connect to in interactive mode
-P –port Port the MySQL server is running on
-S –socket UNIX domain socket to use (instead of -h and -P)
-u –user User to connect to the MySQL server with
-p –password Password for the user
-d –defaults-file Defaults file to read options from (reads [client] group by default)
-i –interval Length of each collection interval
-c –report-count Count of intervals to collect and aggregate
-r –report-file File to output report data to
-s –status-file File to output raw SHOW STATUS data to

I’m still ironing a few things, but wanted to get this last version out for any feedback that anybody would like to provide before I release the next version! You can download the ‘current’ version from http://markleith.co.uk/dl/statpack-v1.tar.gz.

Please do provide feedback!

General, MySQL

Dynamic Logging Variables

May 12th, 2006

Finally!

ChangeSet
1.2396 06/05/12 12:50:50 gluh@eagle.intranet.mysql.r18.ru +12 -0
WL#3015: Logging Improvements - No Restarts(ver N3)
Added slow_query_log & general_log global upadatable variables.
Added slow-query-log & general-log startup options.
Added log_output, log_path, log_slow_queries_path global updatable variables.

http://lists.mysql.com/commits/6279

Now we can do things like “SET GLOBAL general_log = ON;” and “SET GLOBAL log_path=’/log/tmp.log’;”.

This has been something long requested so it’s great to see this slip in to the tree in time for 5.1!

General, MySQL, MySQL 5.1

play free casino games
casino free chip no deposit forum rtg
32 vegas casino coupon code
cirrus casino no deposit code list
free bonus no deposit online casinos
bonus code casinos
online casino investments
no deposit casino wild vegas
casino free online
free no deposit 1 hour casino
free internet casino game
no download casinos free money
monolopy casino games
usa online no deposit casinos
new casino games american
free new player bonus casinos online
no deposit free online casino mac
online casino magic
free no deposit casino cash
bedste online casino
new online casinos free 10 dollars
online casinos free chip no deposit
will roulette systems work for online casinos
free casino online no download
online casino slot games
platinum play online casino download
no deposit bonus code casinos
casino coupon code no deposit 2010
best new no deposit cash bonuses us online casinos
online casino spil
forum coupon casino
casino free sign up bonus australia
casino redeem coupons
bet royal casino free chips
real casino free slot machines
min 20 deposit online casino
casino games to play for free
free casino flash
all no deposit casinos
hack games casino
casino online games for mac
flash casino games
casino spin games
las vegas casino free
casino games free cash
free canadian casino
cash back tam tam casino
cool cat casino bonus codes
no deposit no download casinos
free online no download casino games with 4 card keno
free flash no deposit casino
newest flash casinos
online casino birthday bonus
cirrus casino uk
free bonus no deposit casinos
online casino free bonus promotions
us friendly online no deposit bonus casinos
casinos online free gambling money no deposit req
free money no deposit casino
no deposit casino bonus new 2010
best online casino poker review
no deposit bonus rtg casino
casino free videos slots
new online casinos no deposit
online casino no download required
royal club casino
free online casino tournaments
cirrus casino bonus code
new york casino
online betting internet casino
no download casino and no deposit
online casino bonuses no deposits
top paying casinos online
free online casino south africa
free download slots casino
2010 casino coupon
microgaming casino free plays
online casino bonuses for a minimum deposit
free online casino games for windows 98
online flash casino
no deposit bonus casino coupon codes
rtg casinos no deposit needed
new no deposit casino bonuses
redeem coupon bei online casinos
download free online casino games
free rtg casino chips
no deposit casinos bet royal
slots de casino gratis
casino online games free download software
online casino deposit bonuses
online casino no download free no deposit bonus
casinos sltos gratis
free casino cash bonus with no deposit
casino online no download
casino promotion names
casino play free slots
virtual casino no deposit
online casino roulette pass spin
casino windsor
best online casino review
bet royale casino no deposit
betting casino online poker video
internet casino game
free play online stacked wilds casino games in america
casinos with free no deposit bonus uk
free uk casino promotions
sycuan casino online card games
online gambling and casinos
no deposit casino bonus us players
free no deposit casinos
coupon virtual casino
play free online casinos
online casino us player
casino fun play
frog prince casino games
casino offers free bonus real money for play game
oklshoma gambling casinos
internet casino las vegas
code bonus tam tam casino
casino card games free online
casinosonline
casino free slot games for fun
new on line casinos all us players
new casino coupon codes
no deposit online casino for michigan players
online casino free chips bonuses for usa
new online casinos deposit
free money casinos downloads
reel deal casino online play ghost town
no deposite and no download online casino
deposit bonus casinos
casino fake money
casino italia online
casino slots in atlanta
free online casinos for the usa
virtual online internet casino
free online casinofree money
partybox online casino game
free download casino games not conected to the internet
online casinos with free promotins and no deposits
casino monopoly online free
list of online casinos with bonus codes and no deposit
uk casino bonuses
igt casino
free money casino coupon codes
casino 10
money casino
casino codes for no deposit casinos
online casino games fun money
online no deposit casino bonus no download
best free time free money no deposit casinos on line
las vegas online casino gambling
casino deposit new no online
free casino lasvegas
list of all casinos in the usa
free online casino game
horseshoe casino slots play on line
usa online casino games
10$ free casino bonus
free casino play online
all new no deposit casinos casino coupons
casino game online play poker top
free casino for win money
how to win on online casino slots
sign up bonus casino
canadianonlinecasinos
best casinos at niagra falls
1hour free spin casino
slots of vegas casino
casinos online gratis
biggest no deposit casino usa bonus
online flash casino no download min deposit 5.00
usa online flash casinos
2010 casino no deposit bonus codes
500 free 1 hour casino
2010 bonus codes plenty jackpots online casino
new usa casinos with no deposit
microgaming casino games
fortunelounge online casino
online casinos no deposit bonus code
free sign up online casino usa
one club casino bonus codes
casino online paypal us
online casinos with bonus
bonus no deposit casino
free online casino bonus slots
free multi line casino bonus style slots
best game to make money in a casino
all free money online casinos usa playewrs
online casinos no deposit bonus codes
play casino slots for fun
online casino withdrawal set up methods for us players
casinos 1 hour 1000
best online casino withdrawal methods
legitimate online casino
online casino coupon
listing casino on line
casino por internet
online casino for us residents
free casino online no deposite
online casino internet
casino game list
no deposit casino usa
top online casinos wiyth no deposits and free bonuses
new bonus codes 2010 online casino kool cat
online casinos accepting us players with no deposit bonuses
online gambling insider no deposit casinoes
62010 codes cirrus casino no deposit
free casino bets no deposit required
all slots casino free
free money at casinos no deposit
names of online casinos
flash casino flash casino
golden palace casino only slots
what online casino has the best payouts
2010 no deposit online casino instant cash bonuses
no doposit coupon code casinos
no deposit casino lists
legal and casino and gambling and online
play free casino tournaments win money
virtual casino free games
1 hour free play casino uk
casinos with free play bonus
free online casino money for us players
free casino codes 2010
bet royal casino redeem coupon
beste online casinos
free online casino bonus no deposit required
10 deposit casinos
new 2010 playtech casinos
trucos casino online
casino games no download
casino royal in las vegas
all new casino no deposit codes
download online casino games bingo
online casino bonus forums
online casino bonus codes no deposits
slots online casino free
free bonus casino online
casino games online roulette
free no deposit online casinos for usa p
online casinos that take american express
free money online casino usa
casinos free play
all no deposit playtech casinos
online casinos for uk casino players
online casino play
casino las vegas video
free casino money playtech
best online casino no deposit
online casino no deposit bonus blogscodes
no download free casino no deposit
meilleurs casino internet
no deposit casino signup bonus coupon code list
online betting casino
vegas strip online casino reviews
download free casino slot machine
chinese internet casino bot
1hour free play casino
best online casino game
all new no deposit casinos
no deposit free cash bonus casinos
no deposit coupon code casino
free video slots casino
online casino playing in the us
no deposit us online casinos
casino in las vegas pics
australian online casino paypal
casino coupon code
best odds us online casino
de bedste online casinos
online no minimum deposit casino games
what online casinos offer free sign up bonus
online casino codes for bet royal casino
best no deposit bingo and casinos online
u.s. online casino play for fun
print casino free play online palmsprings
fair casino to play
online casino free slot tournaments
las vegas casino free slot play online casinos
codes coupon bonus casino
promotion codes for free money online casinos
white club casino no deposit bonus code
us players accepted casinos no deposit
online casino no deposit bonus code coupons
free online casino reviews
new casinos online to play for fun
online casinos - free play
free no deposit sign up casino money
vegas online casino fun play
gambling casino online bonus
usa players casino free sign up bonus offers
online free tounament casinos
canada online casinos
best online casinos and poker for u s players
new no deposit online casino bonus codes
online usa accepted casino tournaments
free bonus online casino cash
free video casino slots
immediate play online casinos
best promotion casino
no deposite casino free
good casinos in vegas money
casino download free game hoyle
hour free play casinos
free real money no deposit casinos
free casino slot game online
rtg casino no deposit coupon codes
how to make money in casino
hot fruit casino download
casino games online free
free online stacked wilds casino games in america
which online casinos accept paypal
las vegas casino free play
las vegas free slot play online casino
online casinos no deposit bonus free tornements
casino free internet line
no deposit online casino bonuses
best casino in atlanta
best online casino bonus
liste casino avec bonus no deposit
online casino for usa with no depost and free play
free online cherry casino
las vegas casino members cards
play free flash casino games online
best casino make money
free money casino codes
bonus no deposit casino 2010
best online casino promotions
affiliate casino internet program review
free spins online casinos
casinos mit paypal
free play uk casino
online casino gaming
casino crush forum gambling online
rtg online casinos
casino online game
casino free play promotion
deposit bonus casino flash
rtg casino forum
super slots casino on-line gambling no deposit free sign in
online casinos in uk free slot play
casinos accept paypal
download gnuf online casino
mac no download casino
all slots casino free play
no deposit playtech casinos
online 5 cent casino games
best free no deposit casinos
internet casinos
usa online casinos free bonus
free online casinosignup bonuses
igt casino games online
casino no deposit free bonus
$10 minimum deposit casinos online
no deposit free bonus casino in usa
list of all casinos
no deposit bonuses casino
no download no deposit casino
casino king no deposit codes
us casino bonus codes
no deposit casino bonuses and online gambling 2010
play for free online casino no sign up
newest online nodeposit casino bonuses
2010 online casinos
online casino no deposit
best online casinos that use paypal
casino free no download
betting online casino
cherry casino free chip bonus code
new online casinos accepting usa
free bonus coupon code casinos
free codes casinos no deposit
casino slots online no download
newest casino bonus
casinos bonus free depoit
why cant i redeem coupon casino
casinos for all us no deposit
best casino in online play
new york new york casino offer code
games casino free chip
uncle sam casino game online
no deposit casinos united states
best online casinos in usa
party city casino bonuses
how do i start my own online casino with no money
10 dollars free bonuses at casinos 50 dollars
best online casino in canada
casinos in united states
casino bonuses 4 u
make money on casino bonuses
mac instant free play for fun casino game
african casinos free no diposit
casinos download free
online casino mistakes
casino casinos online
no deposit free money casinos
cirruscasino codes
vegas casino online no deposit bonuses
play free slots casino
free money list of bonus codes cool cat casino
online casino no deposit bonus code
top online casinos win money
casino pay by paypal
casino play for fun no downloads
silver dollor casino slots online
online casinos bonuses free money
no deposit casino play
las vegas flamingo sign up bonuses online casino
no deposit bonus code casino
no deposit bonus south african online casino
no cash deposit casinos
best graffics online casino downloads
free online hoyle casino cheats
online casino play free and win money
free online slot casinos
free paypal online casino
online casino no deposit paypal
free no deposit bonus casinos
friendly online casino
casinos accept us players
best no deposit casino bonuses
no deposit instant play casinos online
free flash casinos
on line casinos no deposit
free online casino play no download
play free casino for real money
free 20 casino no deposit
free bonus casino
online casino promotion bonus
no deposit online casinos
online casino affiliate programs list
casino slots online free
casino free slots on line
free bonus codes for betroyal casino
casinos for fun no download
casinos online slots machines
online casinos in the usa
free play online casino slot machanes
online gambling casino
pay pal casino online
best casino monthly bonuses
casinos online free money no deposit required usa players
play free casino games online for prizes
riverbelle casino bonus code
casino free play no deposit
online casino forums bonus codes
play online monopoly casino
online casinos who accept echeck deposits
no deposit coupon casino
casino start bonus
cleopatra casino game
casino gambling online poker slot
casino new coupon codes
make money play casino with software
club player casino 2010 no deposite bonus code online
is online casinos legal in virginia
no deposit rtg casino bonus codes gambling forums
top canadian casino bonuses
las vegas casino wavs
online best casino index
safest casinos online free money keep winnings for usa players
bonus money with no deposit casino
usa online casino with coupon codes
new casino online 2010 no depositcode
casino download slot offline
play stinkin rich casino games online
usa states with casinos
the virtual casino codes bonus
online casino promotions bonuses
free casino code
online casino for real money no bonus money us players
online gambling through casinos
online casino play for free
latest online casino free money no deposit bonuses
no deposit free cash casino
best free online casino europe
no deposit codes for betroyal casino blog
make cash from online casinos
card casino game online vegas
new online casino no deposit bonus
online casino flash games
casinos online internet
usa casino coupon code
casino online with spin poker
secure online casino
flash casino for us players
casino online gambling game
honduras online casino
no download deposit casino
club player casino bonus codes
all slots casino no deposit bonus
play casino games online for fun
best rated online us casinos
practice play on slots in a casino
vegas casino for free
casino bonus no deposit coupon code
free 5$ real money online casino
free hour casino
no deposit casino blog
casino games on line play for free
top online free no deposit no downloads casinos for real money
play 100 line slots casino online
online casinos offering free play
free casino plays
vegas casino online for fun
list all golden nugget casinos
no deposit casino rtg
online casino free sign up bonus
best casino bonuses
free online casino no download or giving money
free casino chips no deposit coupon code
vegas free casino games
casino game online roulette
pocker casino
free play online casino
casino internet estafa 888
new online casino bonus codes
golden palace casino no deposit
golden moon casino games play online
usa online casinos who accept paypal
best online casino slots
no deposit casinos for 2010
no download us casinos
try online casinos usa players accepted
casino slot machines for sale
no deposit required online casino bonus
virtual casino free chip
online u.s. casinos free chip no deposit bonus
free flash casino online slots
all u.s. online casinos
casinos that accept paypal
free cash for online casinos no deposit needed
no deposit bonus casinos uk sites
casino fan online gambling guide
online casino garage free
play money casinos
online casino usa mastercard
free online casino redeemable cash coupon codes
allow casino gambling
minimum deposit casinos
best nodeposit casinos online
best bonus casino online sign up
top online casinos
online casino gaming, free chips, and flash downloads
free cirrus casino coupon codes
free casino games to play
free cirrus casino no deposit codes
free online casinos bonuses
usa casinos online 1 hour free play
casino online tournament game no downloads
cherry casino promo code
casino free play bonus
golden casino bonus code
hollywood casinos
usa accepted online casino tournaments
last no deposit coupon code casino
online casinos that offer play for free
free online pogo casino poker card games
top 10 on line casinos
free money casino paypal
casino money free
us casino ratings good better best online casinos
free casino poker
free online casino pyramid solitaire games cards
1 hour free play slots casino
online casino credit card fraud
casino las vegas bonus
casino games online for money
no deposit casino australian
10 best online casinos
rtg casinos
online no deposit casino rating 100
casino games slot machine
casino free spins
free play 1 hour online casinos us players
best casino slot online
no deposit casino cash forum
slots plus online casino scam
casino no deposit free 2010
no deposit casinos hour free
casino canada with paypal
free money blackjack casinos no deposit
online casino blackjack
free online casino games for fun
internet casino site
casino free sign up bonus
no deposit rtg casino bonus codes free chips
betroyal casino free code
real online casino free money
free american casino games
casino no deposit cash codes
casino gambling video poker
online casinos - details
play casinos card for free
mac casino card
no deposit rtg casinos
no deposit online casino bonus
real casino in usa online
casino download royal
casinos flash
jackpot city online casino
crazyvegas casino
min deposit usa casino
online casino free credit
february no deposit online casino bonus codes
casino without a deposit
free online casino downloads
casino codes 2
free money rtg casinos
new online casino no deposit codes
$10 min deposit online usa casino
free chip online casinos
craps casinos online
best online casinos free
cirrus uk casino free no deposit coupon code
casino download free money no
no deposit casino uk
free online vegas casino
1hour free play no deposit casinos
best no deposit casino bonus
find casino fun games free no money
search free casino gamess
palace of chance online casino no deposit bonus code
play top online casino games poker
free casino money for birthday
playtech casino
moneygram and online casinos
spades casino internet
weight loss online casino
best casino online rated 1 2010
best rated and honest online casinos for usa players
casino entertainment game online poker
free online games casino slots
hearts casino internet
bad greedy online gambling casino
promotion codes for free play casinos
casinos with paypal deposits
no download online casino
casino us online casino
any more casino free
making money from casinos
free casino games to play for fun and download
online casino sign up bonus