mysql优化
#给students表做表分区 alter table students partition by range(id)( partition p0 values less than(100), partition p1 values less than(200), partition p2 values less than(300), partition p3 values less than(400), partition p_default values less than maxvalue ); #查询students的表分区情况 SELECT partition_name part, partition_expression expr, partition_description descr, table_rows FROM information_schema.partitions WHERE table_schema = SCHEMA() AND table_name='表名称';
#删除分区表
alter table 表名字drop partition 分区名字;
#添加分区表
alter table 表名 add partition (partition p0 values less than(1991)); //只能添加大于分区键的分区
#查询某库的大小 select sum(DATA_LENGTH)+sum(INDEX_LENGTH) from information_schema.tables where table_schema='数据库名称'; #查询所有库的大小 select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') from information_schema.tables; #查询某个表的数据大小 select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') from information_schema.tables where table_schema='数据库名称' AND table_name='表名称'; #查询表的数据大小和索引大小 select table_name,concat(truncate(data_length/1024/1024,2),'MB') as data_size,concat(truncate(index_length/1024/1024,2),'MB') as index_size from information_schema.tables where table_name='表名称' order by index_size desc; #查询碎片大小 select TABLE_SCHEMA,TABLE_NAME,ENGINE,concat(splinter,'G') '碎片(G)' from (SELECT TABLE_SCHEMA,TABLE_NAME,ENGINE,ROUND((DATA_LENGTH+INDEX_LENGTH-TABLE_ROWS*AVG_ROW_LENGTH)/1024/1024/1024) splinter from information_schema.`TABLES` where TABLE_TYPE='BASE TABLE')a WHERE splinter >1 ORDER BY splinter DESC;
#我们在大量delete数据的时候,不会释放磁盘空间,会产生大量的碎片,所以,如果要清理碎片,如下
在清理碎片时候可能需要把innodb_online_alter_log_max_size参数调大,默认128M
optimize table DB.TABLE
mysql存储过程
drop procedure p_user_stat_result;// #删除存储过程 DELIMITER // 修改结束标识符
CREATE PROCEDURE p_user_stat_result() #创建存储过程 BEGIN #开始符号 DECLARE WIDTH INT; DECLARE IDMAX BIGINT; DECLARE PNAME BIGINT; DECLARE PRANGE BIGINT; DECLARE PISEXISTED INT; DECLARE PNAMESTR TEXT; SET PISEXISTED = 0; SET WIDTH = 1000000; SELECT `id` INTO IDMAX FROM `user_stat_result` ORDER BY `id` DESC LIMIT 1; #INTO IDMAX代表将查出来的结果赋值给IDMAX为变量 SET PNAME = FLOOR(IDMAX/WIDTH) + 1; #FLOOR向下取整,比如83.66取值为83 SET PRANGE = PNAME*WIDTH + WIDTH; SET PNAMESTR = CONCAT('p',PNAME); #PNAMESTR=p30 SELECT COUNT(*) AS `counts` INTO PISEXISTED FROM information_schema.`PARTITIONS` WHERE table_name = 'user_stat_result' and partition_name = PNAMESTR; IF PISEXISTED = 0 THEN IF PNAMESTR IS NOT NULL THEN SET @SQL = CONCAT('ALTER TABLE user_stat_result ADD PARTITION (PARTITION ', PNAMESTR, ' VALUES LESS THAN (', PRANGE ,') ENGINE = InnoDB);'); PREPARE STMT FROM @SQL; EXECUTE STMT; #执行sql DEALLOCATE PREPARE STMT; #释放连接 END IF; END IF; END//
call p_user_stat_result// #调用存储过程
创建mysql任务计划
DELIMITER // #修改结束标识符
create event 事件名称 on schedule every 1 day do #每天执行一次也可以every 1 second do等
begin call p_user_stat_result(); #sql语句,这里是调用存储过程
end//
drop event 事件名称 #删除事件
阿里云mysql参数参考
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
innodb_buffer_pool_load_at_startup=OFF bulk_insert_buffer_size=4194304 ft_query_expansion_limit=20 innodb_old_blocks_time=1000 innodb_stats_sample_pages=8 thread_stack=262144 lc_time_names=en_US innodb_thread_concurrency=0 sync_master_info=10000 default_time_zone=SYSTEM old_passwords=0 optimizer_search_depth=62 loose_innodb_data_file_purge_interval=100 innodb_compression_level=6 max_sort_length=1024 max_binlog_cache_size=18446744073709547520 innodb_online_alter_log_max_size=2147483646 key_cache_block_size=1024 init_connect='' innodb_adaptive_max_sleep_delay=150000 query_alloc_block_size=8192 loose_gap_lock_raise_error=OFF log_warnings=1 innodb_lock_wait_timeout=50 innodb_purge_threads=1 rds_reset_all_filter=0 innodb_compression_failure_threshold_pct=5 innodb_compression_pad_pct_max=50 loose_innodb_data_file_purge=ON binlog_rows_query_log_events=OFF innodb_stats_persistent_sample_pages=20 innodb_ft_total_cache_size=640000000 loose_rds_tablestat=OFF loose_max_statement_time=0 innodb_flush_method=O_DIRECT eq_range_index_dive_limit=10 loose_sql_safe_updates=OFF loose_max_execution_time=0 loose_optimizer_trace_features=greedy_search=on,range_optimizer=on,dynamic_range=on,repeated_subselect=on connect_timeout=10 innodb_purge_batch_size=300 loose_rds_threads_running_high_watermark=50000 div_precision_increment=4 innodb_sync_array_size=1 innodb_support_xa=ON innodb_stats_method=nulls_equal lock_wait_timeout=31536000 net_read_timeout=30 innodb_write_io_threads=4 end_markers_in_json=OFF max_binlog_stmt_cache_size=18446744073709547520 innodb_checksum_algorithm=innodb loose_innodb_data_file_purge_max_size=512 query_cache_type=0 innodb_ft_enable_diag_print=OFF loose_gap_lock_write_log=OFF innodb_ft_enable_stopword=ON innodb_io_capacity=2000 slow_launch_time=2 innodb_table_locks=ON innodb_stats_persistent=ON tmp_table_size=2097152 disconnect_on_expired_password=ON loose_tokudb_auto_analyze=30 default_storage_engine=InnoDB net_retry_count=10 innodb_ft_cache_size=8000000 binlog_cache_size=128KB innodb_max_dirty_pages_pct=75 query_cache_limit=1048576 innodb_disable_sort_file_cache=ON innodb_lru_scan_depth=1024 innodb_ft_result_cache_limit=2000000000 long_query_time=1 interactive_timeout=7200 innodb_read_io_threads=4 transaction_prealloc_size=4096 open_files_limit=65535 innodb_open_files=3000 max_heap_table_size=16777216 automatic_sp_privileges=ON explicit_defaults_for_timestamp=false ft_max_word_len=84 innodb_autoextend_increment=64 loose_rds_max_tmp_disk_space=10737418240 sql_mode= innodb_stats_transient_sample_pages=8 innodb_random_read_ahead=OFF table_open_cache=2000 loose_innodb_rds_faster_ddl=ON innodb_status_output=OFF innodb_log_compressed_pages=OFF slave_net_timeout=60 delay_key_write=ON query_cache_wlock_invalidate=OFF general_log=OFF max_prepared_stmt_count=16382 wait_timeout=86400 log_bin_use_v1_row_events=1 query_cache_min_res_unit=4096 innodb_print_all_deadlocks=OFF loose_thread_pool_size=64 binlog_stmt_cache_size=32768 transaction_isolation=READ-COMMITTED innodb_buffer_pool_dump_at_shutdown=OFF query_prealloc_size=8192 key_cache_age_threshold=300 transaction_alloc_block_size=8192 optimizer_trace_limit=1 metadata_locks_cache_size=1024 optimizer_prune_level=1 innodb_max_purge_lag=0 innodb_max_dirty_pages_pct_lwm=0 max_sp_recursion_depth=0 innodb_status_output_locks=OFF updatable_views_with_limit=YES binlog_row_image=full loose_tokudb_buffer_pool_ratio=0 innodb_change_buffer_max_size=25 innodb_optimize_fulltext_only=OFF local_infile=ON innodb_ft_max_token_size=84 loose_thread_pool_enabled=OFF innodb_adaptive_hash_index=ON innodb_sync_spin_loops=100 net_write_timeout=60 flush_time=0 lower_case_table_names=1 character_set_filesystem=binary tls_version=TLSv1,TLSv1.1,TLSv1.2 key_cache_division_limit=100 delayed_insert_timeout=300 loose_rds_audit_max_sql_size=2048 preload_buffer_size=32768 innodb_read_ahead_threshold=56 loose_optimizer_switch= concurrent_insert=1 block_encryption_mode="aes-128-ecb" slow_query_log=ON net_buffer_length=16384 query_cache_size=3145728 innodb_buffer_pool_size=6144M delayed_insert_limit=100 innodb_large_prefix=OFF innodb_monitor_disable= innodb_adaptive_flushing_lwm=10 delayed_queue_size=1000 innodb_thread_sleep_delay=10000 loose_rds_set_connection_id_enabled=ON innodb_old_blocks_pct=37 innodb_ft_sort_pll_degree=2 log_slow_admin_statements=OFF innodb_stats_on_metadata=OFF stored_program_cache=256 group_concat_max_len=1024 innodb_sort_buffer_size=1048576 innodb_spin_wait_delay=6 myisam_sort_buffer_size=262144 innodb_rollback_segments=128 innodb_commit_concurrency=0 innodb_concurrency_tickets=5000 table_definition_cache=512 auto_increment_increment=1 binlog_checksum=CRC32 max_seeks_for_key=18446744073709500000 character_set_client=utf8 max_length_for_sort_data=1024 back_log=3000 max_error_count=64 innodb_io_capacity_max=4000 innodb_strict_mode=OFF binlog_order_commits=ON min_examined_row_limit=0 performance_schema=OFF innodb_ft_min_token_size=3 sync_relay_log_info=10000 innodb_stats_auto_recalc=ON max_connect_errors=100 join_buffer_size=432KB innodb_change_buffering=all optimizer_trace_max_mem_size=16384 innodb_autoinc_lock_mode=1 innodb_rollback_on_timeout=OFF max_write_lock_count=102400 master_verify_checksum=OFF innodb_ft_num_word_optimize=2000 max_join_size=18446744073709551615 loose_validate_password_length=8 log_throttle_queries_not_using_indexes=0 innodb_max_purge_lag_delay=0 loose_optimizer_trace=enabled=off,one_line=off default_week_format=0 innodb_cmp_per_index_enabled=OFF loose_rds_indexstat=OFF host_cache_size=643 low_priority_updates=0 auto_increment_offset=1 range_alloc_block_size=4096 ft_min_word_len=4 sort_buffer_size=848KB slave_type_conversions= innodb_additional_mem_pool_size=2097152 max_allowed_packet=1024M read_buffer_size=848KB thread_cache_size=100 optimizer_trace_offset=-1 loose_thread_pool_oversubscribe=10 character_set_server=utf8 innodb_adaptive_flushing=ON log_queries_not_using_indexes=OFF innodb_monitor_enable= table_open_cache_instances=1 innodb_flush_neighbors=1 innodb_buffer_pool_instances=8