17站长网 网站首页 数据库 Mysql 查看内容

MySQL一个innodb_thread_concurrency设定不当引发的故障

2023-3-16 14:15| 查看: 694 |来源: 互联网

一、问题来源欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下:这是一个朋友问我的典型案例。整个故障现象表现为,MySQL数据库频繁的出现大量的请求不能响应 ...

一、问题来源
欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下:
这是一个朋友问我的典型案例。整个故障现象表现为,MySQL数据库频繁的出现大量的请求不能响应。下面是一些他提供的证据:
1、show processlist
从状态信息来看出现如下情况:
insert操作:状态为update
update/delete操作:状态为updating
select操作:状态为sending data
因此可以推断应该是语句执行期间出现了问题,由于篇幅原因只给出一部分,并且我将语句部分也做了相应截断:
 
show processlist----------------------------
......
11827639    root    dbmis    Execute    9    updating    UPDATE
17224594    root    dbmis    Execute    8    Sending data    SELECT sum(exchange_coin) as exchange_coin FROM
17224595    root    dbmis    Execute    8    update    INSERT INTO
17224596    root    dg    Execute    8    update    INSERT INTO
17224597    root    dbmis    Execute    8    update    INSERT INTO
17224598    root    dbmis    Execute    7    update    INSERT INTO
17224599    root    dbmis    Execute    7    Sending data    SELECT COUNT(*) AS tp_count FROM
17224600    root    dg    Execute    7    update    INSERT INTO
17224601    root    dbmis    Execute    6    update    INSERT INTO
17224602    root    dbmis    Execute    6    Sending data    SELECT sum(exchange_coin) as exchange_coin FROM
17224606    root    dbmis    Execute    5    update    INSERT INTO
17224619    root    dbmis    Execute    2    update    INSERT INTO
17224620    root    dbmis    Execute    2    update    INSERT INTO
17224621    root    dbmis    Execute    2    Sending data    SELECT sum(exchange_coin) as exchange_coin
17224622    root    dg    Execute    2    update    INSERT INTO
17224623    root    dbmis    Execute    1    update    INSERT INTO
17224624    root    dbmis    Execute    1    update    INSERT INTO
17224625    root    dg    Execute    1    update    INSERT INTO
17224626    root    dbmis    Execute    0    update    INSERT INTO
2、系统IO/CPU
从vmstat来看,CPU使用不大,而IO也在可以接受的范围内(vmstat wa%不高且b列为0)如下:
 
vmstat--------------------------------------
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0 927300 3057100      0 53487316    0    0     5   192    0    0  3  1 96  0  0
iostat--------------------------------------
Linux 3.10.0-693.el7.x86_64 (fang-data1)     09/23/2019     _x86_64_    (32 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.72    0.00    0.52    0.45    0.00   96.31
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               9.73    11.28    3.93  264.54   415.23  2624.20    22.64     0.25    0.93    3.25    0.90   0.80  21.61
sda              10.13    11.59    6.34  264.22   450.68  2624.20    22.73     0.01    0.05    2.55    1.00   0.93  25.19
sdc              11.60    11.36    5.03  263.12   453.02  2592.44    22.71     0.17    0.62    5.08    0.53   0.81  21.60
sde               0.01     0.10    0.11  160.45     6.69   920.23    11.55     0.16    1.01    1.80    1.01   0.83  13.32
sdd              11.26    11.30    2.23  263.18   412.90  2592.44    22.65     0.17    0.65   10.37    0.56   0.82  21.78
md126             0.00     0.00   11.30  468.80   164.79  5216.64    22.42     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.11   58.80     6.69   920.23    31.47     0.15    2.56    1.96    2.56   2.16  12.74
dm-1              0.00     0.00    0.06    0.08     0.24     0.31     8.00     0.01   41.80    1.20   72.78   0.83   0.01
dm-2              0.00     0.00   11.24  408.66   164.55  5216.33    25.63     0.14    0.32    1.02    0.30   0.46  19.29
这就比较奇怪了,一般来说数据库不能及时响应请求很大可能是由于系统负载过高。如果说DML还可能是Innodb锁造成的堵塞,但是大量sending data状态下的select操作一般可能都和系统负载过高有联系,但是这里系统负载还在可以接受的范围内。
 
二、pstack分析
借助pstack查看线程的栈帧,查看pstack发现如下(由于篇幅限制只给出部分说明问题的部分):
 
1、insert 线程:
 
Thread 85 (Thread 0x7fbb0d42b700 (LWP 20174)):
#0  0x00007fbfae164c73 in select () from /lib64/libc.so.6
#1  0x0000000000987c0f in os_thread_sleep (tm=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/os/os0thread.cc:287
#2  0x00000000009e4dea in srv_conc_enter_innodb_with_atomics (trx=trx@entry=0x7fba4802f9c8) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/srv/srv0conc.cc:276
#3  srv_conc_enter_innodb (trx=trx@entry=0x7fba4802f9c8) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/srv/srv0conc.cc:511
#4  0x000000000093b948 in innobase_srv_conc_enter_innodb (trx=0x7fba4802f9c8) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/handler/ha_innodb.cc:1280
#5  ha_innobase::write_row (this=0x7fb8440ab260, record=0x7fb8440ab650 "") at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/handler/ha_innodb.cc:6793
#6  0x00000000005b440f in handler::ha_write_row (this=0x7fb8440ab260, buf=0x7fb8440ab650 "") at /home/install/lnmp1.5/src/mysql-5.6.40/sql/handler.cc:7351
#7  0x00000000006dd3a8 in write_record (thd=thd@entry=0x1d396c90, table=table@entry=0x7fb8440aa970, info=info@entry=0x7fbb0d429400, update=update@entry=0x7fbb0d429480) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/sql_insert.cc:1667
#8  0x00000000006e2541 in mysql_insert (thd=thd@entry=0x1d396c90, table_list=<optimized out>, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_REPLACE, ignore=false) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/sql_insert.cc:1072
#9  0x00000000006fa90a in mysql_execute_command (thd=thd@entry=0x1d396c90) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/sql_parse.cc:3500
2、update线程
 
Thread 81 (Thread 0x7fbb24b67700 (LWP 27490)):
#0  0x00007fbfae164c73 in select () from /lib64/libc.so.6
#1  0x0000000000987c0f in os_thread_sleep (tm=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/os/os0thread.cc:287
#2  0x00000000009e4dea in srv_conc_enter_innodb_with_atomics (trx=trx@entry=0x7fb94003c608) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/srv/srv0conc.cc:276
#3  srv_conc_enter_innodb (trx=trx@entry=0x7fb94003c608) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/srv/srv0conc.cc:511
#4  0x000000000093ae4e in innobase_srv_conc_enter_innodb (trx=0x7fb94003c608) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/handler/ha_innodb.cc:1280
#5  ha_innobase::index_read (this=0x7fb95c05b540, buf=0x7fb95c2ae4f0 "/377/377/377", key_ptr=<optimized out>, key_len=<optimized out>, find_flag=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/handler/ha_innodb.cc:7675
#6  0x00000000005ab6e0 in ha_index_read_map (find_flag=HA_READ_KEY_EXACT, keypart_map=3, key=0x7fb940017048 "7/307/017e/257h", buf=<optimized out>, this=0x7fb95c05b540) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/handler.cc:2753
#7  handler::read_range_first (this=0x7fb95c05b540, start_key=<optimized out>, end_key=<optimized out>, eq_range_arg=<optimized out>, sorted=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/handler.cc:6717
#8  0x00000000005aa206 in handler::multi_range_read_next (this=0x7fb95c05b540, range_info=0x7fbb24b65240) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/handler.cc:5871
#9  0x0000000000804acb in QUICK_RANGE_SELECT::get_next (this=0x7fb94000f720) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/opt_range.cc:10644
#10 0x000000000082ae2d in rr_quick (info=0x7fbb24b65410) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/records.cc:369
#11 0x0000000000766e1b in mysql_update (thd=thd@entry=0x1d1f2250, table_list=<optimized out>, fields=..., values=..., conds=0x7fb9400009c8, order_num=<optimized out>, order=<optimized out>, limit=18446744073709551615, handle_duplicates=DUP_ERROR, ignore=false, found_return=found_return@entry=0x7fbb24b65800, updated_return=updated_return@entry=0x7fbb24b65d60) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/sql_update.cc:744
3、select线程
 
Thread 66 (Thread 0x7fbb3c355700 (LWP 16028)):
#0  0x00007fbfae164c73 in select () from /lib64/libc.so.6
#1  0x0000000000987c0f in os_thread_sleep (tm=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/os/os0thread.cc:287
#2  0x00000000009e4dea in srv_conc_enter_innodb_with_atomics (trx=trx@entry=0x7fb988354858) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/srv/srv0conc.cc:276
#3  srv_conc_enter_innodb (trx=trx@entry=0x7fb988354858) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/srv/srv0conc.cc:511
#4  0x000000000093ae4e in innobase_srv_conc_enter_innodb (trx=0x7fb988354858) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/handler/ha_innodb.cc:1280
#5  ha_innobase::index_read (this=0x7fb9880e33a0, buf=0x7fb988351b50 "/377/377/377/377", key_ptr=<optimized out>, key_len=<optimized out>, find_flag=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/storage/innobase/handler/ha_innodb.cc:7675
#6  0x00000000005ab6e0 in ha_index_read_map (find_flag=HA_READ_AFTER_KEY, keypart_map=7, key=0x7fb988134a48 "", buf=<optimized out>, this=0x7fb9880e33a0) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/handler.cc:2753
#7  handler::read_range_first (this=0x7fb9880e33a0, start_key=<optimized out>, end_key=<optimized out>, eq_range_arg=<optimized out>, sorted=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/handler.cc:6717
#8  0x00000000005aa206 in handler::multi_range_read_next (this=0x7fb9880e33a0, range_info=0x7fbb3c353400) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/handler.cc:5871
#9  0x0000000000804acb in QUICK_RANGE_SELECT::get_next (this=0x7fb988002050) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/opt_range.cc:10644
#10 0x000000000082ae2d in rr_quick (info=0x7fb98809c210) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/records.cc:369
#11 0x00000000006d44fd in sub_select (join=0x7fb98809a728, join_tab=0x7fb98809c180, end_of_records=<optimized out>) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/sql_executor.cc:1259
#12 0x00000000006d2823 in do_select (join=0x7fb98809a728) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/sql_executor.cc:936
#13 JOIN::exec (this=0x7fb98809a728) at /home/install/lnmp1.5/src/mysql-5.6.40/sql/sql_executor.cc:194
好了有了这些栈帧视乎发现一些共同点他们都处于innobase_srv_conc_enter_innodb函数下,本函数正是下面参数实现的方式:
 
innodb_thread_concurrency
innodb_concurrency_tickets
所以我随即告诉他检查这两个参数,如果设置了可以尝试取消。过后数据库故障得到解决。
 
三、参数和相关说明
实际上涉及到的参数主要是innodb_thread_concurrency和innodb_concurrency_tickets。将高压力下线程之间抢占CPU而造成线程上下文切换的情况尽量阻塞在Innodb层之外,这就需要innodb_thread_concurrency参数了。同时又要保证对于那些(长时间处理线程)不会长时间的堵塞(短时间处理线程),比如某些select操作需要查询很久,而某些select操作查询量很小,如果等待(长时间的select操作)结束后(短时间select操作)才执行,那么显然会出现(短时间select操作)饥饿问题,换句话说对(短时间select操作)是不公平的, 因此就引入了innodb_concurrency_tickets参数。
 
1、innodb_thread_concurrency
同一时刻能够进入Innodb层的会话(线程)数。如果在Innodb层干活的会话(线程)数量超过这个参数的设置,新会话(线程)将不能从MySQL层进入到Innodb层,它们将进入一个短暂的睡眠状态。休眠多久则通过参数innodb_thread_sleep_delay参数指定,如果还设置了参数innodb_adaptive_max_sleep_delay那么Innodb将会自动调整休眠时间,具体的算法实际上就在srv_conc_enter_innodb_with_atomics函数中,感兴趣的可以执行查看。
其次这种休眠实际上是一个定时醒来的时钟,通过::nanosleep或者select(多路IO转接函数)进行实现,定时唤醒后会话(线程)重新判断是否可以进入Innodb层。函数os_thread_sleep部分如下:
 
#elif defined(HAVE_NANOSLEEP)
    struct timespec    t;
    t.tv_sec = tm / 1000000;
    t.tv_nsec = (tm % 1000000) * 1000;
    ::nanosleep(&t, NULL);
#else
    struct timeval  t;
    t.tv_sec = tm / 1000000;
    t.tv_usec = tm % 1000000;
    select(0, NULL, NULL, NULL, &t);
关于到底如何设置这个值,官方文档有如下建议:
 
Use the following guidelines to help find and maintain an appropriate setting:
- If the number of concurrent user threads for a workload is less than 64, set
innodb_thread_concurrency=0.
- If your workload is consistently heavy or occasionally spikes, start by setting
innodb_thread_concurrency=128 and then lowering the value to 96, 80, 64, and so on, until
you find the number of threads that provides the best performance. For example, suppose your
system typically has 40 to 50 users, but periodically the number increases to 60, 70, or even 200.
You find that performance is stable at 80 concurrent users but starts to show a regression above
this number. In this case, you would set innodb_thread_concurrency=80 to avoid impacting
performance.
- If you do not want InnoDB to use more than a certain number of virtual CPUs for user threads
(20 virtual CPUs, for example), set innodb_thread_concurrency to this number (or possibly
lower, depending on performance results). If your goal is to isolate MySQL from other applications,
you may consider binding the mysqld process exclusively to the virtual CPUs. Be aware,
however, that exclusive binding could result in non-optimal hardware usage if the mysqld process
is not consistently busy. In this case, you might bind the mysqld process to the virtual CPUs but
also allow other applications to use some or all of the virtual CPUs.
- innodb_thread_concurrency values that are too high can cause performance regression due
to increased contention on system internals and resources.
- In some cases, the optimal innodb_thread_concurrency setting can be smaller than the
number of virtual CPUs.
- Monitor and analyze your system regularly. Changes to workload, number of users, or computing
environment may require that you adjust the innodb_thread_concurrency setting
可以发现要合理的设置这个值并不那么容易并且要求较高。
 
2、innodb_concurrency_tickets
实际上这里的tickets可以理解为MySQL层和Innodb层交互的次数,比如一个select一条数据就是需要Innodb层返回一条数据然后MySQL层进行where条件的过滤然后返回给客户端,抛开where条件过滤的情况,如果我们一条语句需要查询100条数据,那么实际上需要进入Innodb层100次,那么实际上消耗的tickets就是100。当然对于insert select这种操作,需要的tickets是普通select的两倍,因为查询需要进入Innodb层一次,insert需要再次进入Innodb层一次,后面我们就使用insert select的方式来模拟堵塞的情况,最后还会给出说明。
 
这样我们也就理解为什么innodb_concurrency_tickets可以避免(长时间处理线程)长时间堵塞(短时间处理线程)的原因了。假设innodb_concurrency_tickets为5000(默认值),有一个需要查询100W行数据的大select操作和一个需要查询100行数据的小select操作,大select操作先进行,但是当查询了5000行数据后将丢失CPU使用权,小select操作将会进行并且一次性完成。
 
最后关于这里涉及的参数可以继续参考官方文档中的说明,我们线上并没有设置这些参数,因为感觉很难设置合适,如果设置不当反而会遇到问题,就如本案例一样。
 
3、事务操作状态
实际上如果是处于这种堵塞情况,我们完全可以在information_schema.innodb_trx和show engine innodb status中看到如下:
 
---TRANSACTION 162307, ACTIVE 133 sec sleeping before entering InnoDB (这里)         
mysql tables in use 2, locked 2
767 lock struct(s), heap size 106968, 212591 row lock(s), undo log entries 15451
MySQL thread id 14, OS thread handle 140736751912704, query id 1077 localhost root Sending data
insert into testui select * from testui
---TRANSACTION 162302, ACTIVE 320 sec, thread declared inside InnoDB 1
mysql tables in use 2, locked 2
2477 lock struct(s), heap size 336344, 609049 row lock(s), undo log entries 83582
MySQL thread id 13, OS thread handle 140737153779456, query id 1050 localhost root Sending data
insert into testti3 select * from testti3
mysql> select trx_id,trx_state,trx_query,trx_operation_state,trx_concurrency_tickets from information_schema.innodb_trx /G
*************************** 1. row ***************************
                 trx_id: 84325
              trx_state: RUNNING
              trx_query: insert into  baguait4 select * from testgp
    trx_operation_state: sleeping before entering InnoDB(这里)
trx_concurrency_tickets: 0
*************************** 2. row ***************************
                 trx_id: 84319
              trx_state: RUNNING
              trx_query: insert into  baguait3 select * from testgp
    trx_operation_state: sleeping before entering InnoDB
trx_concurrency_tickets: 0
我们可以看到事务操作状态被标记为‘sleeping before entering InnoDB’。但是需要注意一点的是对于只读事务比如select操作而言,show engine innodb status可能看不到。但是遗憾的是案例中朋友并没有采集trx_operation_state的值。
 
四、模拟测试
这里我们简单模拟,我们一共启用3个事务,其中两个insert select操作,一个单纯的select操作,当然这里的都是耗时操作,涉及的表每个表都有大概100W的数据。
 
同时为了方便观察我们需要设置参数:
 
innodb_thread_concurrency=1
innodb_concurrency_tickets=10
操作步骤如下:
 
S1 S2 S3
insert into baguait4 select * from testgp
insert into baguait3 select * from testgp
select * from baguait1
如果多观察几次你可以看到如下的现象:
 
mysql> select trx_id,trx_state,trx_query,trx_operation_state,trx_concurrency_tickets from information_schema.innodb_trx /G show processlist;
*************************** 1. row ***************************
                 trx_id: 84529
              trx_state: RUNNING
              trx_query: insert into  baguait4 select * from testgp
    trx_operation_state: sleeping before entering InnoDB
trx_concurrency_tickets: 0
*************************** 2. row ***************************
                 trx_id: 84524
              trx_state: RUNNING
              trx_query: insert into  baguait3 select * from testgp
    trx_operation_state: inserting
trx_concurrency_tickets: 1
*************************** 3. row ***************************
                 trx_id: 422211785606640
              trx_state: RUNNING
              trx_query: select * from baguait1
    trx_operation_state: sleeping before entering InnoDB
trx_concurrency_tickets: 0
3 rows in set (0.00 sec)
+----+-----------------+-----------+---------+---------+------+------------------------+--------------------------------------------+-----------+---------------+
| Id | User            | Host      | db      | Command | Time | State                  | Info                                       | Rows_sent | Rows_examined |
+----+-----------------+-----------+---------+---------+------+------------------------+--------------------------------------------+-----------+---------------+
|  1 | event_scheduler | localhost | NULL    | Daemon  | 3173 | Waiting on empty queue | NULL                                       |         0 |             0 |
|  6 | root            | localhost | testmts | Query   |   70 | Sending data           | insert into  baguait3 select * from testgp |         0 |             0 |
|  7 | root            | localhost | testmts | Query   |   68 | Sending data           | insert into  baguait4 select * from testgp |         0 |             0 |
|  8 | root            | localhost | testmts | Query   |   66 | Sending data           | select * from baguait1                     |    120835 |             0 |
|  9 | root            | localhost | NULL    | Query   |    0 | starting               | show processlist                           |         0 |             0 |
+----+-----------------+-----------+---------+---------+------+------------------------+--------------------------------------------+-----------+---------------+
5 rows in set (0.00 sec)
mysql>
mysql>
mysql>
mysql>
mysql> select trx_id,trx_state,trx_query,trx_operation_state,trx_concurrency_tickets from information_schema.innodb_trx /G show processlist;
*************************** 1. row ***************************
                 trx_id: 84529
              trx_state: RUNNING
              trx_query: insert into  baguait4 select * from testgp
    trx_operation_state: sleeping before entering InnoDB
trx_concurrency_tickets: 0
*************************** 2. row ***************************
                 trx_id: 84524
              trx_state: RUNNING
              trx_query: insert into  baguait3 select * from testgp
    trx_operation_state: sleeping before entering InnoDB
trx_concurrency_tickets: 0
*************************** 3. row ***************************
                 trx_id: 422211785606640
              trx_state: RUNNING
              trx_query: select * from baguait1
    trx_operation_state: fetching rows
trx_concurrency_tickets: 3
3 rows in set (0.00 sec)
+----+-----------------+-----------+---------+---------+------+------------------------+--------------------------------------------+-----------+---------------+
| Id | User            | Host      | db      | Command | Time | State                  | Info                                       | Rows_sent | Rows_examined |
+----+-----------------+-----------+---------+---------+------+------------------------+--------------------------------------------+-----------+---------------+
|  1 | event_scheduler | localhost | NULL    | Daemon  | 3177 | Waiting on empty queue | NULL                                       |         0 |             0 |
|  6 | root            | localhost | testmts | Query   |   74 | Sending data           | insert into  baguait3 select * from testgp |         0 |             0 |
|  7 | root            | localhost | testmts | Query   |   72 | Sending data           | insert into  baguait4 select * from testgp |         0 |             0 |
|  8 | root            | localhost | testmts | Query   |   70 | Sending data           | select * from baguait1                     |    128718 |             0 |
|  9 | root            | localhost | NULL    | Query   |    0 | starting               | show processlist                           |         0 |             0 |
+----+-----------------+-----------+---------+---------+------+------------------------+--------------------------------------------+-----------+---------------+
5 rows in set (0.00 sec)
我们可以观察到trx_operation_state的状态3个操作都在交替的变化,但是总有2个处于‘sleeping before entering InnoDB’状态。并且我们可以观察到trx_concurrency_tickets总是不会大于10的。因此我们有理由相信在同一时刻只有一个操作进入了Innodb层。但是需要注意的是在show engine innodb status中观察不到select的操作如下:
 
------------
TRANSACTIONS
------------
Trx id counter 84538
Purge done for trx's n:o < 84526 undo n:o < 0 state: running but idle
History list length 356
Total number of lock structs in row lock hash table 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 422211785609424, not started
0 lock struct(s), heap size 1160, 0 row lock(s)
本文最后更新于 2023-3-16 14:15,某些文章具有时效性,若有错误或已失效,请在网站留言或联系站长:17tui@17tui.com

·END·
站长网微信号:w17tui,关注站长、创业、关注互联网人 - 互联网创业者营销服务中心

免责声明:本站部分文章和图片均来自用户投稿和网络收集,旨在传播知识,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系我们及时修正或删除。谢谢!

17站长网微信二维码

始终以前瞻性的眼光聚焦站长、创业、互联网等领域,为您提供最新最全的互联网资讯,帮助站长转型升级,为互联网创业者提供更加优质的创业信息和品牌营销服务,与站长一起进步!让互联网创业者不再孤独!

扫一扫,关注站长网微信

大家都在看

  • 前阵子,腾讯历时 4 年打造的“ 末日僵尸生存”游戏《 黎明觉醒》,终于上线。在前期宣发中,光子工作室表示,游戏采用虚幻四打造,画面大幅升级,还会出现可探 ......

    游戏 2023-03-22
  • 继ChatGPT、文心一言之后,谷歌终于将自家对话式AI服务Bard开放测试。谷歌表示,公测将从美国和英国开始,开放更多用户访问是“改进它的下一个关键步骤”。与Cha ......

    软件 2023-03-22
  • 1、点击左下角开始,打开管理工具选择“高级安全windows防火墙”。 2、在左侧的任务栏中选择“入站规则”随后在右侧点击“新建规则”。 3、选择“端口”点击下 ......

    系统问题 2023-03-21
  • 1、首先我们开机,如果已经开了那就重启电脑, 开机进入图示的“英特尔logo”画面时,马上进行第二步。 2、在进入类似上方的logo界面时,快速按下键盘上的“del ......

    系统问题 2023-03-21
  • 《霍格沃茨之遗》的热潮退去后,这款游戏的Steam在线人数从近88万跌至7.5万。推特上有“反恐同”人士嘲讽道:“哈利·波特在霍格沃茨住了7年,你们这些粉丝连2个 ......

    游戏 2023-03-22
  • 答:administrator是系统管理员的意思,可以删除的。 这个单词的意思就是超级用户,是指电脑权限不受控的人。 删除是可以删除的,但是一定要在创建了第二个账户 ......

    系统问题 2023-03-21
  • 第一步,点击左下角的“开始菜单” 第二步,打开其中的“设置” 第三步,打开设置里的“系统”设置。 第四步,点击显示中的“显示适配器属性”选项。 第五步 ......

    系统问题 2023-03-21
  • 答:电脑guest的意思是给客人访问电脑系统的账户。 在系统之中被称作“来宾账户”这个账户一般没有修改系统设置的权限。 可以用作读作计算机系统的信息和文件, ......

    系统问题 2023-03-21
  • 1、打开“资源管理器”,即可查看七个文件夹。 2、在空白桌面出建立“文本文档”。 3、随后进入文本文档,复制黏贴下列代码。 Windows Registry Editor Versio ......

    windows10 2023-03-22
  • 答:appdata能删。 一般不建议删除,删除了之后容易造成应用程序配置丢失,可能在开启一些程序的时候会失败,严重清理还可能会导致无法启动。 里面有三个子文 ......

    系统问题 2023-03-21
  • 1、首先在桌面空白处右击选择个性化打开。 2、在打开的击界面点击打开右下角的屏幕保护程序。 3、在新开的屏幕保护界面就可以选择各种效果来保护屏幕了。 4、 ......

    windows7 2023-03-22
  • 在谷歌宣布生成式AI Bard开启公测后,微软研究院首席研究员Kate Crawford在社交媒体发布文章,质疑Bard的训练数据集调用了Gmail的数据。换言之,Crawford质疑谷 ......

    软件 2023-03-22
  • 方法一: 1、首先打开手机的“电话”功能。 2、接着拨打电话。 3、拨通后,点击“红色方块”的录音就可以开始通话录音了。 方法二: 1、我们也可以在通话时 ......

    iphone 2023-03-21
  • 1、在开机界面重启三次后再次开机即可进入安全模式,点击“启用安全模式”。 2、随后点击左下角开始键,点击“设置”。 3、在windows设置中点击“应用”。 4 ......

    windows10 2023-03-21
  • 1、右键桌面上的网络图标,选择属性。 2、打开网络和共享中心,选择“管理无线网络“ 3、找到你的WiFi名称,右键删除,然后再重新搜索连接即可。...

    windows7 2023-03-21
  • 一、来源不同 1、iso来源于系统光盘,gho来源于系统克隆文件。 二、使用方法不同 1、iso不需要解压缩,直接打开或刻录到光盘中读取就能安装。 2、gho需要解压运 ......

    系统问题 2023-03-21
  • 1、右击桌面此电脑,点击“属性”。 2、进入属性后点击“控制面板主页”。 3、在里面选择打开“程序和功能”。 4、随后在里面打开“启用或关闭windows功能” ......

    系统问题 2023-03-21
  • 1、开始菜单打开控制面板。 2、在控制面板中找到硬件和声音,点击打开。 3、在硬件和声音窗口中选择电源选项。 4、点击电源选项窗口左侧的更改计算机睡眠时间 ......

    windows7 2023-03-21
  • 微软的DirectX(简称DX)是Widows平台的游戏API,现在大家玩的PC游戏绝大多数是基于DX,DX12问世也好几年了,现在要推出新一代的DX13了吗?微软最新的暗示给人无 ......

    游戏 2023-03-22
  • 1、首先单击电脑开始键,选择控制面板。 2、打开后找到语言选项,点击“更改显示语言” 3、打开后点击“管理”按钮。 4、再点击下方的“更改系统区域设置” ......

    windows7 2023-03-21
  • 1、打开QQ浏览器,点击“我的”,再点击右上角“设置”图标, 2、进入设置页面后,点击“清除浏览数据”, 3、勾选需要清除的缓存数据的记录, 4、点击“一键 ......

    软件教程 2023-03-21
  • 1、首先进入“控制面板—用户账户—管理其他账户”, 即可查看登录的账户是不是管理员账户,不是的话就没有权限更改。 2、右击左下角开始键,点击“命令提示符 ......

    windows10 2023-03-21
  • 1、依次打开“开始菜单--所有程序--附件--命令提示符”, 2、然后右键点击命令提示符,点击管理员身份打开! 3、在管理员:命令提示符窗口内输入你想要修改的文件 ......

    windows7 2023-03-22
  • 1、win+r打开运行窗口。 2、输入cmd命令,点击确定。就会打开管理员命令窗口。 3、输入命令regedit打开注册表 4、打开HKEY_CLASSES_ROOT,找到lnkfile,在其 ......

    windows7 2023-03-22
  • 答:电脑上一键ghost表示一个可以备份和还原系统的软件。 它直接翻译就是鬼或者幽灵,可以算是一个无人不知的程序。 基本包括了一键备份一键恢复和各种向导的功 ......

    系统问题 2023-03-21
  • 答:非常不错。 这个软件的功能非常的强大,有着很多的优质图书资源,而且很多都是免费就可以观看的。 点众阅读介绍 软件特色 1、阅读没有广告,非常流畅, ......

    软件教程 2023-03-21
  • 方法一: 1、按下快捷键“win+r”打开运行,输入“gpedit.msc”。 2、即可进入本地组策略编辑器进行需要的相关设置。 方法二: 1、点击左下角开始即可查看到 ......

    系统问题 2023-03-21
  • 1、打开菜鸟APP,点击包裹取件码下方的一键取件。 2、选择要取的包裹,点击全部取出。 3、在弹出的窗口中选择立即提交。 记得提交之后在15分钟内到站取包裹哦 ......

    软件教程 2023-03-21
  • 很多网友喜欢在淘宝平台的聚划算模块中购买产品,意味着你的商品价格非常实惠。淘宝聚划算模块中没有搜索框,那么如何在这里搜索想要的商品呢?下面为大家进行解 ......

    淘宝天猫 2023-03-22
  • 1、右击右下角托盘区中的蓝牙图标,点击“打开设置”。 2、在弹出对话框中选择“允许蓝牙设备查找这台电脑”。 3、右击左下角开始键,选择进入“设备管理器” ......

    windows10 2023-03-21