欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql 常用命令

程序员文章站 2024-03-13 22:38:22
...

1、查看隔离级别

mysql>  select @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.00 sec)
 

2、查看线程连接情况

mysql> show full processlist;
+------+------+----------------------+---------+---------+-------+----------+-----------------------+
| Id   | User | Host                 | db      | Command | Time  | State    | Info                  |
+------+------+----------------------+---------+---------+-------+----------+-----------------------+
| 6588 | root | 192.168.50.106:58891 | safeweb | Sleep   | 13690 |          | NULL                  |
| 7301 | root | 192.168.50.207:52684 | safeweb | Sleep   | 12885 |          | NULL                  |
| 7302 | root | 192.168.50.207:52685 | NULL    | Sleep   | 13117 |          | NULL                  |
| 7601 | root | 172.17.0.1:57112     | safeweb | Sleep   |   150 |          | NULL                  |
| 7602 | root | 172.17.0.1:57116     | safeweb | Sleep   |     2 |          | NULL                  |
| 7603 | root | 172.17.0.1:57184     | safeweb | Sleep   |   150 |          | NULL                  |
| 7604 | root | 172.17.0.1:57220     | safeweb | Sleep   |   150 |          | NULL                  |
| 7706 | root | localhost            | safeweb | Query   |     0 | starting | show full processlist |
 

3、查看事务表,看是否有锁定的线程,如果该锁定的线程id存在于show full processlist 的sleep状态中,则表明此线程被卡住了,需要kill掉

mysql> SELECT * FROM information_schema.INNODB_TRX\G;
*************************** 1. row ***************************
                    trx_id: 202348
                 trx_state: RUNNING
               trx_started: 2019-10-12 20:04:22
     trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 6
       trx_mysql_thread_id: 7706     //此即为被锁定的线程id
                 trx_query: NULL
       trx_operation_state: NULL
         trx_tables_in_use: 0
         trx_tables_locked: 1
          trx_lock_structs: 2
     trx_lock_memory_bytes: 1136
           trx_rows_locked: 5
         trx_rows_modified: 4
   trx_concurrency_tickets: 0
       trx_isolation_level: REPEATABLE READ
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 0
          trx_is_read_only: 0
trx_autocommit_non_locking: 0
1 row in set (0.00 sec)
 

4、kill线程

kill 7706

 

5、查看是否自动提交事务:0-不自动提交 1-自动提交

mysql>  select @@autocommit;  或 show variables like 'autocommit';
+--------------+
| @@autocommit |
+--------------+
|            1 |                   
+--------------+
1 row in set (0.00 sec)

6、修改是否自动提交事务

set global autocommit=1;

 

7、查看使用的引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
 

8、查看行级锁的争夺情况

mysql> show status like 'InnoDB_row_lock%';
+-------------------------------+--------+
| Variable_name                 | Value  |
+-------------------------------+--------+
| Innodb_row_lock_current_waits | 0      |
| Innodb_row_lock_time          | 551475 |
| Innodb_row_lock_time_avg      | 1519   |
| Innodb_row_lock_time_max      | 51008  |
| Innodb_row_lock_waits         | 363    |
+-------------------------------+--------+

InnoDB 的行级锁定状态变量不仅记录了锁定等待次数,还记录了锁定总时长,每次平均时长,以及最大时长,此外还有一个非累积状态量显示了当前正在等待锁定的等待数量。对各个状态量的说明如下:
InnoDB_row_lock_current_waits:当前正在等待锁定的数量;
InnoDB_row_lock_time:从系统启动到现在锁定总时间长度;
InnoDB_row_lock_time_avg:每次等待所花平均时间;
InnoDB_row_lock_time_max:从系统启动到现在等待最常的一次所花的时间;
InnoDB_row_lock_waits:系统启动后到现在总共等待的次数;
对于这5个状态变量,比较重要的主要是InnoDB_row_lock_time_avg(等待平均时长),InnoDB_row_lock_waits(等待总次数)以及InnoDB_row_lock_time(等待总时长)这三项。尤其是当等待次数很高,而且每次等待时长也不小的时候,我们就需要分析系统中为什么会有如此多的等待,然后根据分析结果着手指定优化计划。
如果发现锁争用比较严重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,还可以通过设置InnoDB Monitors 来进一步观察发生锁冲突的表、数据行等,并分析锁争用的原因。
锁冲突的表、数据行等,并分析锁争用的原因。具体方法如下:

mysql> create table InnoDB_monitor(a INT) engine=InnoDB;

然后就可以用下面的语句来进行查看:

mysql> show engine InnoDB status;

监视器可以通过发出下列语句来停止查看:

mysql> drop table InnoDB_monitor;

设置监视器后,会有详细的当前锁等待的信息,包括表名、锁类型、锁定记录的情况等,便于进行进一步的分析和问题的确定。可能会有读者朋友问为什么要先创建一个叫InnoDB_monitor的表呢?因为创建该表实际上就是告诉InnoDB我们开始要监控他的细节状态了,然后InnoDB就会将比较详细的事务以及锁定信息记录进入MySQL的errorlog中,以便我们后面做进一步分析使用。打开监视器以后,默认情况下每15秒会向日志中记录监控的内容,如果长时间打开会导致.err文件变得非常的巨大,所以用户在确认问题原因之后,要记得删除监控表以关闭监视器,或者通过使用“--console”选项来启动服务器以关闭写日志文件

 

9、查看表中字段情况

mysql> desc test1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a     | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
 

10、手动控制事务

1)设置不自动提交事务

      set autocommit=0;

2)开启事务

      start transaction;

11、提交或混滚事务

commit 或 rollback

 

参考  https://blog.csdn.net/hxpjava1/article/details/79407961

相关标签: mysql 常用命令