MySQL常用命令

Mysql 常用命令

1. 事务相关

  • 关闭事务自动提交:
SET @@autocommit=0;
  • 查看事务状态
SHOW  VARIABLES LIKE '%autocommit%';
  • 查看事务隔离级别
SELECT @@transaction_isolation;
  • 设置事务隔离级别:
读未提交:set session transaction isolation level read uncommitted;
读已提交:set session transaction isolation level read committed;
可重复读:set session transaction isolation level repeatable read;
序列化:set session transaction isolation level serializable;
  • 查看当前事务id:
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX
  • 获取当前活跃事务id:
SELECT TRX_ID FROM INFORMATION_SCHEMA.INNODB_TRX  WHERE TRX_MYSQL_THREAD_ID = CONNECTION_ID()
  • 查询表的状态
show table status like 't_user'

2. 进程相关

  • 查看进程列表:
SHOW PROCESSLIST;
  • 查看InnoDB信息:
SHOW ENGINE INNODB STATUS;

3. buffer pool相关

  • 查看 buffer pool 大小:
SELECT @@innodb_buffer_pool_size/1024/1024;
  • 查询排序长度限制:
SHOW VARIABLES LIKE '%max_length_for_sort_data%'; 
  • 设置排序长度限制:
SET max_length_for_sort_data = 1024;

2. 存储过程

  • 存储:
DROP PROCEDURE IF EXISTS test_insert;
DELIMITER ;;
CREATE PROCEDURE test_insert()
BEGIN
DECLARE Y BIGINT DEFAULT 1;
WHILE Y < 9 DO
INSERT INTO t_vocabulary (content, create_person, pinyin, modify_time, classification_ids) VALUES (Y, '管理员', 'pinyin', CURRENT_TIMESTAMP,2);
INSERT INTO t_voca_cla (voca_id, classification_id) VALUES ((SELECT id FROM t_vocabulary WHERE content = CAST(Y AS CHAR)), 2);
SET Y = Y + 1;
END WHILE;
COMMIT;
END;;
CALL test_insert();

3. SQL 分析

  • 关闭索引下推
set optimizer_switch='index_condition_pushdown=off';

4. 数据页相关

  • 查看 buffer pool 中的数据页情况:
SELECT index_name,COUNT(*) FROM information_schema.INNODB_BUFFER_PAGE 
   WHERE INDEX_NAME IN('索引名', '索引名') AND TABLE_NAME LIKE '%表名%' GROUP BY index_name;

5. 强大的 performance_schema

  • 如何找出阻塞事务源头SQL
select pse.SQL_TEXT from performance_schema.data_lock_waits psd left join 
performance_schema.events_statements_history pse 
on psd.BLOCKING_THREAD_ID = pse.THREAD_ID and psd.BLOCKING_EVENT_ID = pse.EVENT_ID + 1;
sql最全的常用命令语句 询某个数据库的连接数 select count(*) from Master.dbo.SysProcesses where dbid=db_id() --前10名其他等待类型 SELECT TOP 10 * from sys.dm_os_wait_stats ORDER BY wait_time_ms DESC SELECT *FROM sys.dm_os_wait_stats WHERE wait_type like 'PAGELATCH%' OR wait_type like 'LAZYWRITER_SLEEP%' --CPU的压力 SELECT scheduler_id, current_tasks_count, runnable_tasks_count FROM sys.dm_os_schedulers WHERE scheduler_id 500 begin select text,CROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle) from master.sys.sysprocesses a end select text,a.* from master.sys.sysprocesses a CROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle) where a.spid = '51' dbcc inputbuffer(53) with tb as ( select blocking_session_id, session_id,db_name(database_id) as dbname,text from master.sys.dm_exec_requests a CROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle) ), tb1 as ( select a.*,login_time,program_name,client_interface_name,login_name,cpu_time,memory_usage*8 as 'memory_usage(KB)', total_scheduled_time,reads,writes,logical_reads from tb a inner join master.sys.dm_exec_sessions b on a.session_id=b.session_id ) select a.*,connect_time,client_tcp_port,client_net_address from tb1 a inner join master.sys.dm_exec_connections b on a.session_id=b.session_id --当前进程数 select * from master.dbo.sysprocesses order by cpu desc --查看当前活动的进程数 sp_who active --查询是否由于连接没有释放引起CPU过高 select * from master.dbo.sysprocesses where spid> 50 and waittype = 0x0000 and waittime = 0 and status = 'sleeping ' and last_batch < dateadd(minute, -10, getdate()) and login_time 50 and waittype = 0x0000 and waittime = 0 and status = 'sleeping ' and last_batch < dateadd(minute, -60, getdate()) and login_time 1 ORDER BY qs.plan_generation_num SELECT top 50 qt.text AS SQL_text ,SUM(qs.total_worker_time) AS total_cpu_time, SUM(qs.execution_count) AS total_execution_count, SUM(qs.total_worker_time)/SUM(qs.execution_count) AS avg_cpu_time, COUNT(*) AS number_of_statements FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt GROUP BY qt.text ORDER BY total_cpu_time DESC --统计总的CPU时间 --ORDER BY avg_cpu_time DESC --统计平均单次查询CPU时间 -- 计算可运行状态下的工作进程数量 SELECT COUNT(*) as workers_waiting_for_cpu,s.scheduler_id FROM sys.dm_os_workers AS o INNER JOIN sys.dm_os_schedulers AS s ON o.scheduler_address=s.scheduler_address AND s.scheduler_id<255 WHERE o.state='RUNNABLE' GROUP BY s.scheduler_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值