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参数参考

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
View Code

 

posted @ 2022-08-24 18:05  力王7314  阅读(32)  评论(0编辑  收藏  举报