Jan
11
2011
--

When does Innodb Start Transaction ?

When does Innodb Start Transaction ? The answer looks obvious – when you issue “BEGIN” command. This is however wrong answer from engine point of you. Run “SHOW INNODB STATUS” and you will see “not started” status in transaction list.

It is only when you read (or write) to INNODB table you can see transaction is started:

---TRANSACTION F56AED, ACTIVE 4 sec, process no 23727, OS thread id 139753656395520
MySQL thread id 112, query id 411 localhost root
show innodb status
Trx read view will not see trx with id >= F56AEE, sees < F56AEE

If you're running in AUTOCOMMIT=0 mode the same logic will apply - setting this mode will NOT start transaction however reading or writing Innodb table will.

I would call it delayed transaction creation - having transaction open is costly, especially in repeatable-read mode as it will require innodb not to purge any old row versions from start of transaction until it is committed so delaying the start makes sense.

There is the side effect of this behavior though. When we say in repeatable read mode reads will see state of data at the time of transaction start we might refer to issuing BEGIN statement while it is actually first access of Innodb table. In most cases you would not care but if you really need all data be seen at the time of transaction start you can use "START TRANSACTION WITH CONSISTENT SNAPSHOT" command.

Jan
11
2011
--

Bad weather strikes Meetup in Charlotte,NC

Due to bad weather my flight to Charlotte was canceled today and the only time they could rebook me was the red eye on Friday to arrive on Saturday morning – later than I suppose to be back.
As such we have to cancel MySQL Meetup which was scheduled for tomorrow. I hope I’ll be able to get to Charlotte in February and we’ll try
schedule Meetup at that time.

Jan
11
2011
--

Percona Server 5.1.54-12.5

Percona Server version 5.1.54-12.5 is now available for download. It is now the current stable release version.

Functionality Added or Changed

Bugs Fixed

  • Bug #689830 – The development environment tests of show_slave_status_nolock work only on statement-based replication. They were failing when row-based replication was attempted. A check is now made for the replication type to test. (Oleg Tsarev)
  • Bug #688643, Bug #691234 – Boolean command line options and configuration variables in the slow_extended patch were not being processed properly.  (Oleg Tsarev)
  • Bug #692211 – Starting the server with a non-zero innodb_auto_lru_dump value could crash the server if the dump file did not exist. (Alexey Kopytov)

For more information, please see the following links:

Jan
10
2011
--

How to Identify Bad Queries in MySQL

Finding bad queries is a big part of optimization. A scientific optimization process can be simplified to “can anything be improved for less than it costs not to improve it? – if not, we’re done.” In databases, we care most about the work the database is doing. That is, queries. There are other things we care about, but not as much as queries. The key here is that the question “can anything be improved” requires a process for identifying queries that can be improved. The easiest way to do that is to look for things that indicate sub-optimality.

All of the above might seem to be obvious, but I wanted to frame the rest of this post with a logical starting point. Next let’s see what kinds of things about queries might indicate that they aren’t optimal.

A responsible approach to a task such as finding bad queries begins with a definition of badness that we can be pretty sure is complete. I am interested in knowing whether I’m missing anything, but I believe the definition of badness in this article is fairly complete. (Post comments if I’m wrong.)

Here is my definition:

  • Queries are bad either singly (an individual query is bad) or in aggregate (a group or class of queries is bad). I think this is a complete definition because the only other kind of number besides “one” and “many” is “zero”, and a nonexistent query can’t be bad.
  • Queries, or groups of queries, are bad because
    1. they are slow and provide a bad user experience, or
    2. they add too much load to the system, or
    3. they block other queries from running

This last three-part definition is where I can’t be sure that I’ve got a complete definition.

Now, given the definition above, how do we find these queries in some input such as a log of queries? It shouldn’t surprise you that there is a working implementation of most of this in a tool, Maatkit’s mk-query-digest. Here’s how:

  1. It finds queries (or groups of queries) that are slow and provide a bad user experience by the parameters to the –outliers option. If a query is slower than X more than N times, it’s bad. You can look at factors such as the variance-to-mean ratio, the Apdex score, and the explain sparkline to see whether the query is likely to be possible to optimize.
  2. It finds queries or groups of queries that add too much load to the system by grouping queries into classes and summing the execution time together. Then it prints out a profile of the classes, so you can see which ones contribute what fraction of total execution time. You can use Amdahl’s Law to decide which of those are candidates for improvement. (The V/M ratio, Apdex score, and the explain sparkline are useful here too.)
  3. mk-query-digest doesn’t do part 3 — finding queries that block other queries — yet.

The missing piece, part 3 — finding queries that block other queries — is best done by observing clusters in query end times. If there is a sudden burst of queries completing, the first one to complete is likely — but not certain — to have blocked the others from running. This could be due to internal locks, I/O starvation, or what have you.

In all of the above cases, the additional information in Percona Server’s query execution logs is absolutely vital. Without data to analyze, you’re left to guess at what the server is doing. For example, in Percona Server we have microsecond-precision timestamps for log events. Edit: note that I’m referring to the timestamp when the query executed, not merely the duration the query executed for, which has been available in MySQL for years. This is necessary for determining whether a group of queries completed in a cluster. One-second granularity (what you get in standard MySQL) might be enough precision for finding some cases of queries blocking others, but it’s nowhere near precise enough to find and diagnose the kinds of sub-second performance stalls we are interested in. Without data, you can only guess; and guessing ain’t optimizing.

We are considering improving mk-query-digest do to this missing analytical step. I have done it many times with simple awk scripts and various statistical measures. What do you think? Is there more to be done? Is there a better approach? Are we missing some notion of badness, or some heuristic for detecting bad queries? Let me know by posting in the comments.

Jan
10
2011
--

Percona Server Fast-Restart White Paper Posted

I’ve posted a new white paper about the implementation and benefits of Percona Server’s fast-restart capabilities. Briefly, after shutting down and restarting or rebooting the server, it can be back to full performance in a couple of minutes. That’s minutes, not hours or days. This matters a lot for keeping uptime high and reducing hardware requirements. There are a ton of benefits when you don’t have to obsess over how long it’s going to take to get the server back into production. Hot buzzword-compliant use cases definitely include cloud computing, because now you can get lots of memory in the cloud, but you still get terrible I/O performance so MySQL restarts take an eternity.

Read the white paper for the details; it is posted in the white paper section of our site and as always, is free to download and share with friends.

Jan
08
2011
--

Ultimate MySQL variable and status reference list

I am constantly referring to the amazing MySQL manual, especially the option and variable reference table. But just as frequently, I want to look up blog posts on variables, or look for content in the Percona documentation or forums. So I present to you what is now my newest Firefox toolbar bookmark: an option and variable reference for all three sites in one!

abort_slave_event_count blog percona.com manual
Aborted_clients blog percona.com manual
Aborted_connects blog percona.com manual
allow_suspicious_udfs blog percona.com manual
ansi blog percona.com manual
auto_increment_increment blog percona.com manual
auto_increment_offset blog percona.com manual
autocommit blog percona.com manual
automatic_sp_privileges blog percona.com manual
back_log blog percona.com manual
basedir blog percona.com manual
big_tables blog percona.com manual
bind_address blog percona.com manual
Binlog_cache_disk_use blog percona.com manual
binlog_cache_size blog percona.com manual
Binlog_cache_use blog percona.com manual
binlog_direct_non_transactional_updates blog percona.com manual
binlog_do_db blog percona.com manual
binlog_format blog percona.com manual
binlog_ignore_db blog percona.com manual
binlog_row_event_max_size blog percona.com manual
Binlog_stmt_cache_disk_use blog percona.com manual
binlog_stmt_cache_size blog percona.com manual
Binlog_stmt_cache_use blog percona.com manual
bootstrap blog percona.com manual
bulk_insert_buffer_size blog percona.com manual
Bytes_received blog percona.com manual
Bytes_sent blog percona.com manual
character_set_client blog percona.com manual
character_set_client_handshake blog percona.com manual
character_set_connection blog percona.com manual
character_set_database blog percona.com manual
character_set_filesystem blog percona.com manual
character_set_results blog percona.com manual
character_set_server blog percona.com manual
character_set_system blog percona.com manual
character_sets_dir blog percona.com manual
chroot blog percona.com manual
collation_connection blog percona.com manual
collation_database blog percona.com manual
collation_server blog percona.com manual
Com_admin_commands blog percona.com manual
Com_alter_db blog percona.com manual
Com_alter_db_upgrade blog percona.com manual
Com_alter_event blog percona.com manual
Com_alter_function blog percona.com manual
Com_alter_procedure blog percona.com manual
Com_alter_server blog percona.com manual
Com_alter_table blog percona.com manual
Com_alter_tablespace blog percona.com manual
Com_analyze blog percona.com manual
Com_assign_to_keycache blog percona.com manual
Com_backup_table blog percona.com manual
Com_begin blog percona.com manual
Com_binlog blog percona.com manual
Com_call_procedure blog percona.com manual
Com_change_db blog percona.com manual
Com_change_master blog percona.com manual
Com_check blog percona.com manual
Com_checksum blog percona.com manual
Com_commit blog percona.com manual
Com_create_db blog percona.com manual
Com_create_event blog percona.com manual
Com_create_function blog percona.com manual
Com_create_index blog percona.com manual
Com_create_procedure blog percona.com manual
Com_create_server blog percona.com manual
Com_create_table blog percona.com manual
Com_create_trigger blog percona.com manual
Com_create_udf blog percona.com manual
Com_create_user blog percona.com manual
Com_create_view blog percona.com manual
Com_dealloc_sql blog percona.com manual
Com_delete blog percona.com manual
Com_delete_multi blog percona.com manual
Com_do blog percona.com manual
Com_drop_db blog percona.com manual
Com_drop_event blog percona.com manual
Com_drop_function blog percona.com manual
Com_drop_index blog percona.com manual
Com_drop_procedure blog percona.com manual
Com_drop_server blog percona.com manual
Com_drop_table blog percona.com manual
Com_drop_trigger blog percona.com manual
Com_drop_user blog percona.com manual
Com_drop_view blog percona.com manual
Com_empty_query blog percona.com manual
Com_execute_sql blog percona.com manual
Com_flush blog percona.com manual
Com_grant blog percona.com manual
Com_ha_close blog percona.com manual
Com_ha_open blog percona.com manual
Com_ha_read blog percona.com manual
Com_help blog percona.com manual
Com_insert blog percona.com manual
Com_insert_select blog percona.com manual
Com_install_plugin blog percona.com manual
Com_kill blog percona.com manual
Com_load blog percona.com manual
Com_lock_tables blog percona.com manual
Com_optimize blog percona.com manual
Com_preload_keys blog percona.com manual
Com_prepare_sql blog percona.com manual
Com_purge blog percona.com manual
Com_purge_before_date blog percona.com manual
Com_release_savepoint blog percona.com manual
Com_rename_table blog percona.com manual
Com_rename_user blog percona.com manual
Com_repair blog percona.com manual
Com_replace blog percona.com manual
Com_replace_select blog percona.com manual
Com_reset blog percona.com manual
Com_resignal blog percona.com manual
Com_restore_table blog percona.com manual
Com_revoke blog percona.com manual
Com_revoke_all blog percona.com manual
Com_rollback blog percona.com manual
Com_rollback_to_savepoint blog percona.com manual
Com_savepoint blog percona.com manual
Com_select blog percona.com manual
Com_set_option blog percona.com manual
Com_show_authors blog percona.com manual
Com_show_binlog_events blog percona.com manual
Com_show_binlogs blog percona.com manual
Com_show_charsets blog percona.com manual
Com_show_collations blog percona.com manual
Com_show_column_types blog percona.com manual
Com_show_contributors blog percona.com manual
Com_show_create_db blog percona.com manual
Com_show_create_event blog percona.com manual
Com_show_create_func blog percona.com manual
Com_show_create_proc blog percona.com manual
Com_show_create_table blog percona.com manual
Com_show_create_trigger blog percona.com manual
Com_show_databases blog percona.com manual
Com_show_engine_logs blog percona.com manual
Com_show_engine_mutex blog percona.com manual
Com_show_engine_status blog percona.com manual
Com_show_errors blog percona.com manual
Com_show_events blog percona.com manual
Com_show_fields blog percona.com manual
Com_show_function_code blog percona.com manual
Com_show_function_status blog percona.com manual
Com_show_grants blog percona.com manual
Com_show_innodb_status blog percona.com manual
Com_show_keys blog percona.com manual
Com_show_logs blog percona.com manual
Com_show_master_status blog percona.com manual
Com_show_new_master blog percona.com manual
Com_show_open_tables blog percona.com manual
Com_show_plugins blog percona.com manual
Com_show_privileges blog percona.com manual
Com_show_procedure_code blog percona.com manual
Com_show_procedure_status blog percona.com manual
Com_show_processlist blog percona.com manual
Com_show_profile blog percona.com manual
Com_show_profiles blog percona.com manual
Com_show_relaylog_events blog percona.com manual
Com_show_slave_hosts blog percona.com manual
Com_show_slave_status blog percona.com manual
Com_show_status blog percona.com manual
Com_show_storage_engines blog percona.com manual
Com_show_table_status blog percona.com manual
Com_show_tables blog percona.com manual
Com_show_triggers blog percona.com manual
Com_show_variables blog percona.com manual
Com_show_warnings blog percona.com manual
Com_signal blog percona.com manual
Com_slave_start blog percona.com manual
Com_slave_stop blog percona.com manual
Com_stmt_close blog percona.com manual
Com_stmt_execute blog percona.com manual
Com_stmt_fetch blog percona.com manual
Com_stmt_prepare blog percona.com manual
Com_stmt_reprepare blog percona.com manual
Com_stmt_reset blog percona.com manual
Com_stmt_send_long_data blog percona.com manual
Com_truncate blog percona.com manual
Com_uninstall_plugin blog percona.com manual
Com_unlock_tables blog percona.com manual
Com_update blog percona.com manual
Com_update_multi blog percona.com manual
Com_xa_commit blog percona.com manual
Com_xa_end blog percona.com manual
Com_xa_prepare blog percona.com manual
Com_xa_recover blog percona.com manual
Com_xa_rollback blog percona.com manual
Com_xa_start blog percona.com manual
completion_type blog percona.com manual
Compression blog percona.com manual
concurrent_insert blog percona.com manual
connect_timeout blog percona.com manual
Connections blog percona.com manual
console blog percona.com manual
core_file blog percona.com manual
Created_tmp_disk_tables blog percona.com manual
Created_tmp_files blog percona.com manual
Created_tmp_tables blog percona.com manual
datadir blog percona.com manual
date_format blog percona.com manual
datetime_format blog percona.com manual
debug blog percona.com manual
debug_sync blog percona.com manual
debug_sync_timeout blog percona.com manual
default_storage_engine blog percona.com manual
default_time_zone blog percona.com manual
default_week_format blog percona.com manual
defaults_extra_file blog percona.com manual
defaults_file blog percona.com manual
defaults_group_suffix blog percona.com manual
delay_key_write blog percona.com manual
Delayed_errors blog percona.com manual
delayed_insert_limit blog percona.com manual
Delayed_insert_threads blog percona.com manual
delayed_insert_timeout blog percona.com manual
delayed_queue_size blog percona.com manual
Delayed_writes blog percona.com manual
des_key_file blog percona.com manual
disconnect_slave_event_count blog percona.com manual
div_precision_increment blog percona.com manual
enable_locking blog percona.com manual
enable_named_pipe blog percona.com manual
enable_pstack blog percona.com manual
engine_condition_pushdown blog percona.com manual
error_count blog percona.com manual
event_scheduler blog percona.com manual
exit_info blog percona.com manual
expire_logs_days blog percona.com manual
external_locking blog percona.com manual
external_user blog percona.com manual
federated blog percona.com manual
flush blog percona.com manual
Flush_commands blog percona.com manual
flush_time blog percona.com manual
foreign_key_checks blog percona.com manual
ft_boolean_syntax blog percona.com manual
ft_max_word_len blog percona.com manual
ft_min_word_len blog percona.com manual
ft_query_expansion_limit blog percona.com manual
ft_stopword_file blog percona.com manual
gdb blog percona.com manual
general_log blog percona.com manual
general_log_file blog percona.com manual
group_concat_max_len blog percona.com manual
Handler_commit blog percona.com manual
Handler_delete blog percona.com manual
Handler_prepare blog percona.com manual
Handler_read_first blog percona.com manual
Handler_read_key blog percona.com manual
Handler_read_last blog percona.com manual
Handler_read_next blog percona.com manual
Handler_read_prev blog percona.com manual
Handler_read_rnd blog percona.com manual
Handler_read_rnd_next blog percona.com manual
Handler_rollback blog percona.com manual
Handler_savepoint blog percona.com manual
Handler_savepoint_rollback blog percona.com manual
Handler_update blog percona.com manual
Handler_write blog percona.com manual
have_compress blog percona.com manual
have_crypt blog percona.com manual
have_csv blog percona.com manual
have_dynamic_loading blog percona.com manual
have_geometry blog percona.com manual
have_innodb blog percona.com manual
have_openssl blog percona.com manual
have_partitioning blog percona.com manual
have_profiling blog percona.com manual
have_query_cache blog percona.com manual
have_rtree_keys blog percona.com manual
have_ssl blog percona.com manual
have_symlink blog percona.com manual
help blog percona.com manual
hostname blog percona.com manual
identity blog percona.com manual
ignore_builtin_innodb blog percona.com manual
init_connect blog percona.com manual
init_file blog percona.com manual
init_slave blog percona.com manual
innodb blog percona.com manual
innodb_adaptive_flushing blog percona.com manual
innodb_adaptive_hash_index blog percona.com manual
innodb_additional_mem_pool_size blog percona.com manual
innodb_autoextend_increment blog percona.com manual
innodb_autoinc_lock_mode blog percona.com manual
innodb_buffer_pool_instances blog percona.com manual
Innodb_buffer_pool_pages_data blog percona.com manual
Innodb_buffer_pool_pages_dirty blog percona.com manual
Innodb_buffer_pool_pages_flushed blog percona.com manual
Innodb_buffer_pool_pages_free blog percona.com manual
Innodb_buffer_pool_pages_latched blog percona.com manual
Innodb_buffer_pool_pages_misc blog percona.com manual
Innodb_buffer_pool_pages_total blog percona.com manual
Innodb_buffer_pool_read_ahead blog percona.com manual
Innodb_buffer_pool_read_ahead_evicted blog percona.com manual
Innodb_buffer_pool_read_requests blog percona.com manual
Innodb_buffer_pool_reads blog percona.com manual
innodb_buffer_pool_size blog percona.com manual
Innodb_buffer_pool_wait_free blog percona.com manual
Innodb_buffer_pool_write_requests blog percona.com manual
innodb_change_buffering blog percona.com manual
innodb_checksums blog percona.com manual
innodb_commit_concurrency blog percona.com manual
innodb_concurrency_tickets blog percona.com manual
innodb_data_file_path blog percona.com manual
Innodb_data_fsyncs blog percona.com manual
innodb_data_home_dir blog percona.com manual
Innodb_data_pending_fsyncs blog percona.com manual
Innodb_data_pending_reads blog percona.com manual
Innodb_data_pending_writes blog percona.com manual
Innodb_data_read blog percona.com manual
Innodb_data_reads blog percona.com manual
Innodb_data_writes blog percona.com manual
Innodb_data_written blog percona.com manual
Innodb_dblwr_pages_written blog percona.com manual
Innodb_dblwr_writes blog percona.com manual
innodb_doublewrite blog percona.com manual
innodb_fast_shutdown blog percona.com manual
innodb_file_format blog percona.com manual
innodb_file_format_check blog percona.com manual
innodb_file_format_max blog percona.com manual
innodb_file_per_table blog percona.com manual
innodb_flush_log_at_trx_commit blog percona.com manual
innodb_flush_method blog percona.com manual
innodb_force_recovery blog percona.com manual
Innodb_have_atomic_builtins blog percona.com manual
innodb_io_capacity blog percona.com manual
innodb_lock_wait_timeout blog percona.com manual
innodb_locks_unsafe_for_binlog blog percona.com manual
innodb_log_buffer_size blog percona.com manual
innodb_log_file_size blog percona.com manual
innodb_log_files_in_group blog percona.com manual
innodb_log_group_home_dir blog percona.com manual
Innodb_log_waits blog percona.com manual
Innodb_log_write_requests blog percona.com manual
Innodb_log_writes blog percona.com manual
innodb_max_dirty_pages_pct blog percona.com manual
innodb_max_purge_lag blog percona.com manual
innodb_mirrored_log_groups blog percona.com manual
innodb_old_blocks_pct blog percona.com manual
innodb_old_blocks_time blog percona.com manual
innodb_open_files blog percona.com manual
Innodb_os_log_fsyncs blog percona.com manual
Innodb_os_log_pending_fsyncs blog percona.com manual
Innodb_os_log_pending_writes blog percona.com manual
Innodb_os_log_written blog percona.com manual
Innodb_page_size blog percona.com manual
Innodb_pages_created blog percona.com manual
Innodb_pages_read blog percona.com manual
Innodb_pages_written blog percona.com manual
innodb_purge_batch_size blog percona.com manual
innodb_purge_threads blog percona.com manual
innodb_read_ahead_threshold blog percona.com manual
innodb_read_io_threads blog percona.com manual
innodb_replication_delay blog percona.com manual
innodb_rollback_on_timeout blog percona.com manual
Innodb_row_lock_current_waits blog percona.com manual
Innodb_row_lock_time blog percona.com manual
Innodb_row_lock_time_avg blog percona.com manual
Innodb_row_lock_time_max blog percona.com manual
Innodb_row_lock_waits blog percona.com manual
Innodb_rows_deleted blog percona.com manual
Innodb_rows_inserted blog percona.com manual
Innodb_rows_read blog percona.com manual
Innodb_rows_updated blog percona.com manual
innodb_spin_wait_delay blog percona.com manual
innodb_stats_on_metadata blog percona.com manual
innodb_stats_sample_pages blog percona.com manual
innodb_status_file blog percona.com manual
innodb_strict_mode blog percona.com manual
innodb_support_xa blog percona.com manual
innodb_sync_spin_loops blog percona.com manual
innodb_table_locks blog percona.com manual
innodb_thread_concurrency blog percona.com manual
innodb_thread_sleep_delay blog percona.com manual
Innodb_truncated_status_writes blog percona.com manual
innodb_use_native_aio blog percona.com manual
innodb_use_sys_malloc blog percona.com manual
innodb_version blog percona.com manual
innodb_write_io_threads blog percona.com manual
insert_id blog percona.com manual
interactive_timeout blog percona.com manual
join_buffer_size blog percona.com manual
keep_files_on_create blog percona.com manual
Key_blocks_not_flushed blog percona.com manual
Key_blocks_unused blog percona.com manual
Key_blocks_used blog percona.com manual
key_buffer_size blog percona.com manual
key_cache_age_threshold blog percona.com manual
key_cache_block_size blog percona.com manual
key_cache_division_limit blog percona.com manual
Key_read_requests blog percona.com manual
Key_reads blog percona.com manual
Key_write_requests blog percona.com manual
Key_writes blog percona.com manual
language blog percona.com manual
large_files_support blog percona.com manual
large_page_size blog percona.com manual
large_pages blog percona.com manual
last_insert_id blog percona.com manual
Last_query_cost blog percona.com manual
lc_messages blog percona.com manual
lc_messages_dir blog percona.com manual
lc_time_names blog percona.com manual
license blog percona.com manual
local_infile blog percona.com manual
local_infile blog percona.com manual
lock_wait_timeout blog percona.com manual
locked_in_memory blog percona.com manual
log blog percona.com manual
log_bin blog percona.com manual
log_bin blog percona.com manual
log_bin_index blog percona.com manual
log_bin_trust_function_creators blog percona.com manual
log_error blog percona.com manual
log_isam blog percona.com manual
log_output blog percona.com manual
log_queries_not_using_indexes blog percona.com manual
log_short_format blog percona.com manual
log_slave_updates blog percona.com manual
log_slow_admin_statements blog percona.com manual
log_slow_queries blog percona.com manual
log_slow_slave_statements blog percona.com manual
log_tc blog percona.com manual
log_tc_size blog percona.com manual
log_warnings blog percona.com manual
long_query_time blog percona.com manual
low_priority_updates blog percona.com manual
lower_case_file_system blog percona.com manual
lower_case_table_names blog percona.com manual
master_bind blog percona.com manual
master_connect_retry blog percona.com manual
master_host blog percona.com manual
master_info_file blog percona.com manual
master_password blog percona.com manual
master_port blog percona.com manual
master_retry_count blog percona.com manual
master_ssl blog percona.com manual
master_ssl_ca blog percona.com manual
master_ssl_capath blog percona.com manual
master_ssl_cert blog percona.com manual
master_ssl_cipher blog percona.com manual
master_ssl_key blog percona.com manual
master_user blog percona.com manual
max_allowed_packet blog percona.com manual
max_binlog_cache_size blog percona.com manual
max_binlog_dump_events blog percona.com manual
max_binlog_size blog percona.com manual
max_binlog_stmt_cache_size blog percona.com manual
max_connect_errors blog percona.com manual
max_connections blog percona.com manual
max_delayed_threads blog percona.com manual
max_error_count blog percona.com manual
max_heap_table_size blog percona.com manual
max_insert_delayed_threads blog percona.com manual
max_join_size blog percona.com manual
max_length_for_sort_data blog percona.com manual
max_prepared_stmt_count blog percona.com manual
max_relay_log_size blog percona.com manual
max_seeks_for_key blog percona.com manual
max_sort_length blog percona.com manual
max_sp_recursion_depth blog percona.com manual
max_tmp_tables blog percona.com manual
Max_used_connections blog percona.com manual
max_user_connections blog percona.com manual
max_write_lock_count blog percona.com manual
memlock blog percona.com manual
min_examined_row_limit blog percona.com manual
myisam_block_size blog percona.com manual
myisam_data_pointer_size blog percona.com manual
myisam_max_sort_file_size blog percona.com manual
myisam_mmap_size blog percona.com manual
myisam_recover blog percona.com manual
myisam_recover_options blog percona.com manual
myisam_recover_options blog percona.com manual
myisam_repair_threads blog percona.com manual
myisam_sort_buffer_size blog percona.com manual
myisam_stats_method blog percona.com manual
myisam_use_mmap blog percona.com manual
named_pipe blog percona.com manual
net_buffer_length blog percona.com manual
net_read_timeout blog percona.com manual
net_retry_count blog percona.com manual
net_write_timeout blog percona.com manual
new blog percona.com manual
no_defaults blog percona.com manual
Not_flushed_delayed_rows blog percona.com manual
old blog percona.com manual
old_alter_table blog percona.com manual
old_passwords blog percona.com manual
old_style_user_limits blog percona.com manual
one_thread blog percona.com manual
Open_files blog percona.com manual
open_files_limit blog percona.com manual
Open_streams blog percona.com manual
Open_table_definitions blog percona.com manual
Open_tables blog percona.com manual
Opened_files blog percona.com manual
Opened_table_definitions blog percona.com manual
Opened_tables blog percona.com manual
optimizer_prune_level blog percona.com manual
optimizer_search_depth blog percona.com manual
optimizer_switch blog percona.com manual
partition blog percona.com manual
performance_schema blog percona.com manual
Performance_schema_cond_classes_lost blog percona.com manual
Performance_schema_cond_instances_lost blog percona.com manual
performance_schema_events_waits_history_long_size blog percona.com manual
performance_schema_events_waits_history_size blog percona.com manual
Performance_schema_file_classes_lost blog percona.com manual
Performance_schema_file_handles_lost blog percona.com manual
Performance_schema_file_instances_lost blog percona.com manual
Performance_schema_locker_lost blog percona.com manual
performance_schema_max_cond_classes blog percona.com manual
performance_schema_max_cond_instances blog percona.com manual
performance_schema_max_file_classes blog percona.com manual
performance_schema_max_file_handles blog percona.com manual
performance_schema_max_file_instances blog percona.com manual
performance_schema_max_mutex_classes blog percona.com manual
performance_schema_max_mutex_instances blog percona.com manual
performance_schema_max_rwlock_classes blog percona.com manual
performance_schema_max_rwlock_instances blog percona.com manual
performance_schema_max_table_handles blog percona.com manual
performance_schema_max_table_instances blog percona.com manual
performance_schema_max_thread_classes blog percona.com manual
performance_schema_max_thread_instances blog percona.com manual
Performance_schema_mutex_classes_lost blog percona.com manual
Performance_schema_mutex_instances_lost blog percona.com manual
Performance_schema_rwlock_classes_lost blog percona.com manual
Performance_schema_rwlock_instances_lost blog percona.com manual
Performance_schema_table_handles_lost blog percona.com manual
Performance_schema_table_instances_lost blog percona.com manual
Performance_schema_thread_classes_lost blog percona.com manual
Performance_schema_thread_instances_lost blog percona.com manual
pid_file blog percona.com manual
plugin blog percona.com manual
plugin_dir blog percona.com manual
plugin_load blog percona.com manual
port blog percona.com manual
port_open_timeout blog percona.com manual
preload_buffer_size blog percona.com manual
Prepared_stmt_count blog percona.com manual
print_defaults blog percona.com manual
profiling blog percona.com manual
profiling_history_size blog percona.com manual
protocol_version blog percona.com manual
proxy_user blog percona.com manual
pseudo_thread_id blog percona.com manual
Qcache_free_blocks blog percona.com manual
Qcache_free_memory blog percona.com manual
Qcache_hits blog percona.com manual
Qcache_inserts blog percona.com manual
Qcache_lowmem_prunes blog percona.com manual
Qcache_not_cached blog percona.com manual
Qcache_queries_in_cache blog percona.com manual
Qcache_total_blocks blog percona.com manual
Queries blog percona.com manual
query_alloc_block_size blog percona.com manual
query_cache_limit blog percona.com manual
query_cache_min_res_unit blog percona.com manual
query_cache_size blog percona.com manual
query_cache_type blog percona.com manual
query_cache_wlock_invalidate blog percona.com manual
query_prealloc_size blog percona.com manual
Questions blog percona.com manual
rand_seed1 blog percona.com manual
rand_seed2 blog percona.com manual
range_alloc_block_size blog percona.com manual
read_buffer_size blog percona.com manual
read_only blog percona.com manual
read_rnd_buffer_size blog percona.com manual
relay_log blog percona.com manual
relay_log_index blog percona.com manual
relay_log_info_file blog percona.com manual
relay_log_purge blog percona.com manual
relay_log_recovery blog percona.com manual
relay_log_space_limit blog percona.com manual
replicate_do_db blog percona.com manual
replicate_do_table blog percona.com manual
replicate_ignore_db blog percona.com manual
replicate_ignore_table blog percona.com manual
replicate_rewrite_db blog percona.com manual
replicate_same_server_id blog percona.com manual
replicate_wild_do_table blog percona.com manual
replicate_wild_ignore_table blog percona.com manual
report_host blog percona.com manual
report_password blog percona.com manual
report_port blog percona.com manual
report_user blog percona.com manual
rpl_recovery_rank blog percona.com manual
Rpl_semi_sync_master_clients blog percona.com manual
rpl_semi_sync_master_enabled blog percona.com manual
Rpl_semi_sync_master_net_avg_wait_time blog percona.com manual
Rpl_semi_sync_master_net_wait_time blog percona.com manual
Rpl_semi_sync_master_net_waits blog percona.com manual
Rpl_semi_sync_master_no_times blog percona.com manual
Rpl_semi_sync_master_no_tx blog percona.com manual
Rpl_semi_sync_master_status blog percona.com manual
Rpl_semi_sync_master_timefunc_failures blog percona.com manual
rpl_semi_sync_master_timeout blog percona.com manual
rpl_semi_sync_master_trace_level blog percona.com manual
Rpl_semi_sync_master_tx_avg_wait_time blog percona.com manual
Rpl_semi_sync_master_tx_wait_time blog percona.com manual
Rpl_semi_sync_master_tx_waits blog percona.com manual
rpl_semi_sync_master_wait_no_slave blog percona.com manual
Rpl_semi_sync_master_wait_pos_backtraverse blog percona.com manual
Rpl_semi_sync_master_wait_sessions blog percona.com manual
Rpl_semi_sync_master_yes_tx blog percona.com manual
rpl_semi_sync_slave_enabled blog percona.com manual
Rpl_semi_sync_slave_status blog percona.com manual
rpl_semi_sync_slave_trace_level blog percona.com manual
Rpl_status blog percona.com manual
safe_mode blog percona.com manual
safe_show_database blog percona.com manual
safe_user_create blog percona.com manual
secure_auth blog percona.com manual
secure_file_priv blog percona.com manual
Select_full_join blog percona.com manual
Select_full_range_join blog percona.com manual
Select_range blog percona.com manual
Select_range_check blog percona.com manual
Select_scan blog percona.com manual
server_id blog percona.com manual
shared_memory blog percona.com manual
shared_memory_base_name blog percona.com manual
show_slave_auth_info blog percona.com manual
skip_character_set_client_handshake blog percona.com manual
skip_concurrent_insert blog percona.com manual
skip_event_scheduler blog percona.com manual
skip_external_locking blog percona.com manual
skip_grant_tables blog percona.com manual
skip_host_cache blog percona.com manual
skip_locking blog percona.com manual
skip_log_warnings blog percona.com manual
skip_name_resolve blog percona.com manual
skip_networking blog percona.com manual
skip_partition blog percona.com manual
skip_safemalloc blog percona.com manual
skip_show_database blog percona.com manual
skip_slave_start blog percona.com manual
skip_ssl blog percona.com manual
skip_stack_trace blog percona.com manual
skip_symbolic_links blog percona.com manual
skip_thread_priority blog percona.com manual
slave_compressed_protocol blog percona.com manual
slave_exec_mode blog percona.com manual
Slave_heartbeat_period blog percona.com manual
slave_load_tmpdir blog percona.com manual
slave_net_timeout blog percona.com manual
Slave_open_temp_tables blog percona.com manual
Slave_received_heartbeats blog percona.com manual
Slave_retried_transactions blog percona.com manual
Slave_running blog percona.com manual
slave_skip_errors blog percona.com manual
slave_transaction_retries blog percona.com manual
slave_type_conversions blog percona.com manual
Slow_launch_threads blog percona.com manual
slow_launch_time blog percona.com manual
Slow_queries blog percona.com manual
slow_query_log blog percona.com manual
slow_query_log_file blog percona.com manual
socket blog percona.com manual
sort_buffer_size blog percona.com manual
Sort_merge_passes blog percona.com manual
Sort_range blog percona.com manual
Sort_rows blog percona.com manual
Sort_scan blog percona.com manual
sporadic_binlog_dump_fail blog percona.com manual
sql_auto_is_null blog percona.com manual
sql_big_selects blog percona.com manual
sql_big_tables blog percona.com manual
sql_buffer_result blog percona.com manual
sql_log_bin blog percona.com manual
sql_log_off blog percona.com manual
sql_log_update blog percona.com manual
sql_low_priority_updates blog percona.com manual
sql_max_join_size blog percona.com manual
sql_mode blog percona.com manual
sql_notes blog percona.com manual
sql_quote_show_create blog percona.com manual
sql_safe_updates blog percona.com manual
sql_select_limit blog percona.com manual
sql_slave_skip_counter blog percona.com manual
sql_warnings blog percona.com manual
ssl blog percona.com manual
Ssl_accept_renegotiates blog percona.com manual
Ssl_accepts blog percona.com manual
ssl_ca blog percona.com manual
Ssl_callback_cache_hits blog percona.com manual
ssl_capath blog percona.com manual
ssl_cert blog percona.com manual
ssl_cipher blog percona.com manual
Ssl_cipher blog percona.com manual
Ssl_cipher_list blog percona.com manual
Ssl_client_connects blog percona.com manual
Ssl_connect_renegotiates blog percona.com manual
Ssl_ctx_verify_depth blog percona.com manual
Ssl_ctx_verify_mode blog percona.com manual
Ssl_default_timeout blog percona.com manual
Ssl_finished_accepts blog percona.com manual
Ssl_finished_connects blog percona.com manual
ssl_key blog percona.com manual
Ssl_session_cache_hits blog percona.com manual
Ssl_session_cache_misses blog percona.com manual
Ssl_session_cache_mode blog percona.com manual
Ssl_session_cache_overflows blog percona.com manual
Ssl_session_cache_size blog percona.com manual
Ssl_session_cache_timeouts blog percona.com manual
Ssl_sessions_reused blog percona.com manual
Ssl_used_session_cache_entries blog percona.com manual
Ssl_verify_depth blog percona.com manual
Ssl_verify_mode blog percona.com manual
ssl_verify_server_cert blog percona.com manual
Ssl_version blog percona.com manual
standalone blog percona.com manual
storage_engine blog percona.com manual
symbolic_links blog percona.com manual
sync_binlog blog percona.com manual
sync_frm blog percona.com manual
sync_master_info blog percona.com manual
sync_relay_log blog percona.com manual
sync_relay_log_info blog percona.com manual
sysdate_is_now blog percona.com manual
system_time_zone blog percona.com manual
table_definition_cache blog percona.com manual
table_lock_wait_timeout blog percona.com manual
Table_locks_immediate blog percona.com manual
Table_locks_waited blog percona.com manual
table_open_cache blog percona.com manual
table_type blog percona.com manual
tc_heuristic_recover blog percona.com manual
Tc_log_max_pages_used blog percona.com manual
Tc_log_page_size blog percona.com manual
Tc_log_page_waits blog percona.com manual
temp_pool blog percona.com manual
thread_cache_size blog percona.com manual
thread_concurrency blog percona.com manual
thread_handling blog percona.com manual
thread_stack blog percona.com manual
Threads_cached blog percona.com manual
Threads_connected blog percona.com manual
Threads_created blog percona.com manual
Threads_running blog percona.com manual
time_format blog percona.com manual
time_zone blog percona.com manual
timed_mutexes blog percona.com manual
timestamp blog percona.com manual
tmp_table_size blog percona.com manual
tmpdir blog percona.com manual
transaction_alloc_block_size blog percona.com manual
transaction_isolation blog percona.com manual
transaction_prealloc_size blog percona.com manual
tx_isolation blog percona.com manual
unique_checks blog percona.com manual
updatable_views_with_limit blog percona.com manual
Uptime blog percona.com manual
Uptime_since_flush_status blog percona.com manual
user blog percona.com manual
verbose blog percona.com manual
version blog percona.com manual
version_comment blog percona.com manual
version_compile_machine blog percona.com manual
version_compile_os blog percona.com manual
wait_timeout blog percona.com manual
warning_count blog percona.com manual
Jan
07
2011
--

Upcoming Webinar on HA solutions for MySQL

On January 31st, I’ll be giving a webinar whose title is “Choosing a High-Availability Solution”. Although the subject is not new, we keep receiving many questions regarding HA and MySQL so we thought it would be a good idea to present a webinar on the topic. The content will be a revised version of the presentation I prepared for the UC 2010 (talk actually was given by Peter because I could not attend). The goal of this webinar is to review the various solutions and give their pros and cons. Of course, attending this webinar is free.

Description:

http://www.percona.com/webinars/2011-01-31-choosing-a-high-availability-solution/

To register:

https://percona-events.webex.com/percona-events/onstage/g.php?t=a&d=665815392

Regards,

Yves


Entry posted by Yves Trudeau |
No comment

Add to: delicious | digg | reddit | netscape | Google Bookmarks

Written by in: MySQL,Zend Developer |
Jan
07
2011
--

High Rate insertion with MySQL and Innodb

I again work with the system which needs high insertion rate for data which generally fits in memory. Last time I worked with similar system it used MyISAM and the system was built using multiple tables. Using multiple key caches was the good solution at that time and we could get over 200K of inserts/sec.

This time I worked with Innodb tables… it was a different system with different table structure, not to mention different hardware so It can’t be compared directly, still it is nice to see you can get the numbers as high with Innodb too.

I will spare you all experiments we went through and just share final numbers. On 8 core Opteron Box we were able to achieve 275K inserts/sec at which time we started to see load to get IO bound because of log writes and flushing dirty buffers. I’m confident you can get to 400K+ inserts/sec on faster hardware and disks (say better RAID or Flash) which is a very cool number. Of course, mind you this is in memory insertion in the simple table and table with long rows and bunch of indexes will see lower numbers.

So what’s the deal ? First MySQL 5.5 (frankly I did not try Percona Server 5.1 in this case) With MySQL 5.1 and Innodb Plugin we could see 40%+ CPU wasted on mutex spinlocks (per oprofile), which went down to about 15% in MySQL 5.5.8 with 8 concurrent threads. This both shows there is a substantial gains as well as room for more performance optimizations. Dmitri has good suggestions on tuning MySQL 5.5 and this is what I used for start. Using multiple buffer pools with innodb_buffer_pool_instances=8 was very important.

Second thing – Partitioning. Unfortunately MySQL 5.5 leaves the huge bottleneck for write workloads in place – there is per index rw lock, so only one thread can insert index entry at the time, which can be significant bottleneck. We got 2x+ better performance by hash partitioning table by one of the columns and I would expect gains can be higher with more cores. PARTITION BY HASH(col) PARTITIONS 8 is what we used. This looks like a good workaround but remember partitioning can impact performance of your select queries dramatically.

The inserts in this case of course are bulk inserts… using single value inserts you would get much lower numbers. In fact we used load data infile which is one of the ways to get a great performance (the competing way is to have prepared bulk insert statements).

We need to try new Percona Server 5.5 on our Cisco box to see if we can get to 500K inserts/sec – this can be a nice round number :)


Entry posted by Peter Zaitsev |
13 comments

Add to: delicious | digg | reddit | netscape | Google Bookmarks

Jan
05
2011
--

Announcing Percona Live: San Francisco February 16th

Today we’re announcing Percona Live – a one day event to be held at the Bently Reserve on February 16th in San Francisco.  Live is our way of showcasing some of the awesome work that has been going into MySQL recently – and the theme of this event is Beyond MySQL 5.1.

Our first guest speaker is none other than Jeremy Zawodny.  Jeremy is well known in the MySQL community having been the original author of High Performance MySQL 1st Ed.  He will be presenting on how Craigslist has already upgraded to MySQL 5.5 – and are running on Fusion-io SSDs in production.

Tickets are available for early bird registration at $50.  To signup, or for more information please visit the percona website.


Entry posted by Morgan Tocker |
One comment

Add to: delicious | digg | reddit | netscape | Google Bookmarks

Jan
03
2011
--

Speaking on MySQL/PHP Meetup in Charlotte, NC

I’m speaking at MySQL/PHP Meetup at Charlotte,NC next week with topic being Scaling MySQL Applications. We will have a presentation probably for about an hour and the good amount of time for questions. So come prepared.

Great thanks to Red Ventures, LLC for help organizing and sponsoring this event. I’m hearing there are going to be a door prizes, some snacks and drinks available on this event.


Entry posted by Peter Zaitsev |
No comment

Add to: delicious | digg | reddit | netscape | Google Bookmarks

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com