no | stauts | desc |
1 | Aborted_clients | 由于客户端没有正确关闭连接导致客户端终止而中断的连接数。 |
2 | Aborted_connects | 试图连接到MySQL服务器而失败的连接数。 |
3 | Binlog_cache_disk_use | 使用临时二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量。 |
4 | Binlog_cache_use | 使用临时二进制日志缓存的事务数量。 |
5 | Binlog_stmt_cache_disk_use | 当非事务语句使用二进制日志缓存,但是超出binlog_stmt_cache_size时,使用一个临时文件来存放这些语句。 |
6 | Binlog_stmt_cache_use | 使用二进制日志缓存文件的非事务语句数量。 |
7 | Bytes_received | 从所有客户端接收到的字节数。 |
8 | Bytes_sent | 发送给所有客户端的字节数。 |
9 | Com_admin_commands | Com_xxx 语句计数变量表示每个xxx 语句执行的次数。每类语句有一个状态变量。例如,Com_delete和Com_insert分别统计DELETE 和INSERT语句执行的次数。 |
10 | Com_assign_to_keycache | |
11 | Com_alter_db | |
12 | Com_alter_db_upgrade | |
13 | Com_alter_event | |
14 | Com_alter_function | |
15 | Com_alter_procedure | |
16 | Com_alter_server | |
17 | Com_alter_table | |
18 | Com_alter_tablespace | |
19 | Com_alter_user | |
20 | Com_analyze | |
21 | Com_begin | |
22 | Com_binlog | |
23 | Com_call_procedure | |
24 | Com_change_db | |
25 | Com_change_master | |
26 | Com_check | |
27 | Com_checksum | |
28 | Com_commit | |
29 | Com_create_db | |
30 | Com_create_event | |
31 | Com_create_function | |
32 | Com_create_index | |
33 | Com_create_procedure | |
34 | Com_create_server | |
35 | Com_create_table | |
36 | Com_create_trigger | |
37 | Com_create_udf | |
38 | Com_create_user | |
39 | Com_create_view | |
40 | Com_dealloc_sql | |
41 | Com_delete | |
42 | Com_delete_multi | |
43 | Com_do | |
44 | Com_drop_db | |
45 | Com_drop_event | |
46 | Com_drop_function | |
47 | Com_drop_index | |
48 | Com_drop_procedure | |
49 | Com_drop_server | |
50 | Com_drop_table | |
51 | Com_drop_trigger | |
52 | Com_drop_user | |
53 | Com_drop_view | |
54 | Com_empty_query | |
55 | Com_execute_sql | |
56 | Com_flush | |
57 | Com_get_diagnostics | |
58 | Com_grant | |
59 | Com_ha_close | |
60 | Com_ha_open | |
61 | Com_ha_read | |
62 | Com_help | |
63 | Com_insert | |
64 | Com_insert_select | |
65 | Com_install_plugin | |
66 | Com_kill | |
67 | Com_load | |
68 | Com_lock_tables | |
69 | Com_optimize | |
70 | Com_preload_keys | |
71 | Com_prepare_sql | |
72 | Com_purge | |
73 | Com_purge_before_date | |
74 | Com_release_savepoint | |
75 | Com_rename_table | |
76 | Com_rename_user | |
77 | Com_repair | |
78 | Com_replace | |
79 | Com_replace_select | |
80 | Com_reset | |
81 | Com_resignal | |
82 | Com_revoke | |
83 | Com_revoke_all | |
84 | Com_rollback | |
85 | Com_rollback_to_savepoint | |
86 | Com_savepoint | |
87 | Com_select | |
88 | Com_set_option | |
89 | Com_signal | |
90 | Com_show_binlog_events | |
91 | Com_show_binlogs | |
92 | Com_show_charsets | |
93 | Com_show_collations | |
94 | Com_show_create_db | |
95 | Com_show_create_event | |
96 | Com_show_create_func | |
97 | Com_show_create_proc | |
98 | Com_show_create_table | |
99 | Com_show_create_trigger | |
100 | Com_show_databases | |
101 | Com_show_engine_logs | |
102 | Com_show_engine_mutex | |
103 | Com_show_engine_status | |
104 | Com_show_events | |
105 | Com_show_errors | |
106 | Com_show_fields | |
107 | Com_show_function_code | |
108 | Com_show_function_status | |
109 | Com_show_grants | |
110 | Com_show_keys | |
111 | Com_show_master_status | |
112 | Com_show_open_tables | |
113 | Com_show_plugins | |
114 | Com_show_privileges | |
115 | Com_show_procedure_code | |
116 | Com_show_procedure_status | |
117 | Com_show_processlist | |
118 | Com_show_profile | |
119 | Com_show_profiles | |
120 | Com_show_relaylog_events | |
121 | Com_show_slave_hosts | |
122 | Com_show_slave_status | |
123 | Com_show_status | |
124 | Com_show_storage_engines | |
125 | Com_show_table_status | |
126 | Com_show_tables | |
127 | Com_show_triggers | |
128 | Com_show_variables | |
129 | Com_show_warnings | |
130 | Com_slave_start | |
131 | Com_slave_stop | |
132 | Com_stmt_close | |
133 | Com_stmt_execute | |
134 | Com_stmt_fetch | |
135 | Com_stmt_prepare | |
136 | Com_stmt_reprepare | |
137 | Com_stmt_reset | |
138 | Com_stmt_send_long_data | |
139 | Com_truncate | |
140 | Com_uninstall_plugin | |
141 | Com_unlock_tables | |
142 | Com_update | |
143 | Com_update_multi | |
144 | Com_xa_commit | |
145 | Com_xa_end | |
146 | Com_xa_prepare | |
147 | Com_xa_recover | |
148 | Com_xa_rollback | |
149 | Com_xa_start | |
150 | Compression | 客户端是否使用了压缩的连接协议。 |
151 | Connection_errors_accept | 在监听端口调用accept()时的错误数 |
152 | Connection_errors_internal | 由于服务器内部错误被拒绝的连接数,如未能启动一个新线程或内存不足的情况。 |
153 | Connection_errors_max_connections | 由于 max_connections参数限制导致被拒绝的连接数。 |
154 | Connection_errors_peer_address | 当查找连接客户端IP地址时发生的连接错误数 |
155 | Connection_errors_select | 在监听端口调用select()或poll()时的错误数(这个操作的失败并不一定意味着客户端连接被拒绝。) |
156 | Connection_errors_tcpwrap | 被libwrap库拒绝的连接数。 |
157 | Connections | 试图连接到(不管是否成功)MySQL服务器的连接数。 |
158 | Created_tmp_disk_tables | 服务器执行语句时在硬盘上自动创建的临时表的数量。 |
159 | Created_tmp_files | mysqld已经创建的临时文件的数量。 |
160 | Created_tmp_tables | 服务器执行语句时自动创建的内存中的临时表的数量。如果Created_tmp_disk_tables较大,你可能要增加tmp_table_size值使临时表基于内存而不基于硬盘。 |
161 | Delayed_errors | 用INSERT DELAYED写的出现错误的行数(可能为duplicate key)。 |
162 | Delayed_insert_threads | 使用的INSERT DELAYED处理器线程数。 |
163 | Delayed_writes | 写入的INSERT DELAYED行数。 |
164 | Flush_commands | 执行的FLUSH语句数。 |
165 | Handler_commit | 内部提交语句数。 |
166 | Handler_delete | 行从表中删除的次数。 |
167 | Handler_discover | MySQL服务器可以问NDB CLUSTER存储引擎是否知道某一名字的表。这被称作发现。Handler_discover说明通过该方法发现的次数。 |
168 | Handler_external_lock | 调用external_lock()的次数,通常发生在访问表实例的开始或结束时。不同存储引擎直接可能有差异。 |
169 | Handler_mrr_init | 服务器使用存储引擎自己的多量程读(Multi-Range Read)实现访问表的次数。 |
170 | Handler_prepare | 准备阶段的两阶段提交操作计数器。 |
171 | Handler_read_first | 索引中第一条被读的次数。如果较高,它建议服务器正执行大量全索引扫描;例如,SELECT col1 FROM foo,假定col1有索引。 |
172 | Handler_read_key | 根据键读一行的请求数。如果较高,说明查询和表的索引正确。 |
173 | Handler_read_last | 查询读最后一个索引的请求数。当使用ORDER BY时,服务器优先发出使用第一个索引的请求,之后是使用其他索引。当使用ORDER BY DESC时,服务器优先发出使用最后一个索引的请求, 之后是前几个索引的请求。 |
174 | Handler_read_next | 按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。 |
175 | Handler_read_prev | 按照键顺序读前一行的请求数。该读方法主要用于优化ORDER BY … DESC。 |
176 | Handler_read_rnd | 根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键。 |
177 | Handler_read_rnd_next | 在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。 |
178 | Handler_rollback | 内部ROLLBACK语句的数量。 |
179 | Handler_savepoint | 在一个存储引擎放置一个保存点的请求数量 |
180 | Handler_savepoint_rollback | 在一个存储引擎的要求回滚到一个保存点数目 |
181 | Handler_update | 在表内更新一行的请求数。 |
182 | Handler_write | 在表内插入一行的请求数。 |
183 | Innodb_buffer_pool_dump_status | 记录innodb缓冲池中页数量。由innodb_buffer_pool_dump_at_shutdown或者innodb_buffer_pool_dump_now的设置触发。 |
184 | Innodb_buffer_pool_load_status | innodb缓冲池通过读 |
185 | Innodb_buffer_pool_pages_data | 包含数据的页数(脏或干净)。 |
186 | Innodb_buffer_pool_bytes_data | 包含数据的页字节数。 |
187 | Innodb_buffer_pool_pages_dirty | 当前的脏页数。 |
188 | Innodb_buffer_pool_bytes_dirty | 当前的脏页字节数。 |
189 | Innodb_buffer_pool_pages_flushed | 要求清空的缓冲池页数。 |
190 | Innodb_buffer_pool_pages_free | 空页数。 |
191 | Innodb_buffer_pool_pages_latched | 在InnoDB缓冲池中锁定的页数。这是当前正读或写或由于其它原因不能清空或删除的页数。 |
192 | Innodb_buffer_pool_pages_misc | 忙的页数,因为它们已经被分配优先用作管理,例如行锁定或适用的哈希索引。该值还可以计算为Innodb_buffer_pool_pages_total – Innodb_buffer_pool_pages_free – Innodb_buffer_pool_pages_data。 |
193 | Innodb_buffer_pool_pages_total | 缓冲池总大小(页数)。 |
194 | Innodb_buffer_pool_read_ahead_rnd | InnoDB初始化的“随机”read-aheads数。当查询以随机顺序扫描表的一大部分时发生。 |
195 | Innodb_buffer_pool_read_ahead | 后台预读线程读取到Innodb缓冲池的页的数量。 |
196 | Innodb_buffer_pool_read_ahead_evicted | 后台预读线程读取到Innodb缓冲池的页由于未被查询使用而驱逐的数量。 |
197 | Innodb_buffer_pool_read_requests | InnoDB已经完成的逻辑读请求数 |
198 | Innodb_buffer_pool_reads | 不能满足InnoDB必须单页读取的缓冲池中的逻辑读数量。 |
199 | Innodb_buffer_pool_wait_free | 一般情况,通过后台向InnoDB缓冲池写。但是,如果需要读或创建页,并且没有干净的页可用,则它还需要先等待页面清空。该计数器对等待实例进行记 |
数。如果已经适当设置缓冲池大小,该值应小。 | ||
200 | Innodb_buffer_pool_write_requests | 向InnoDB缓冲池的写数量。 |
201 | Innodb_data_fsyncs | fsync()操作数。 |
202 | Innodb_data_pending_fsyncs | 当前挂起的fsync()操作数。 |
203 | Innodb_data_pending_reads | 当前挂起的读数。 |
204 | Innodb_data_pending_writes | 当前挂起的写数。 |
205 | Innodb_data_read | 至此已经读取的数据数量(字节)。 |
206 | Innodb_data_reads | 数据读总数量。 |
207 | Innodb_data_writes | 数据写总数量。 |
208 | Innodb_data_written | 至此已经写入的数据量(字节)。 |
209 | Innodb_dblwr_pages_written | 为此目的已经写好的页数。 |
210 | Innodb_dblwr_writes | 已经执行的双写操作数量 |
211 | Innodb_have_atomic_builtins | 指示服务器是否建立原子操作指令。 |
212 | Innodb_log_waits | 我们必须等待的时间,因为日志缓冲区太小,我们在继续前必须先等待对它清空。 |
213 | Innodb_log_write_requests | 日志写请求数。 |
214 | Innodb_log_writes | 向日志文件的物理写数量。 |
215 | Innodb_os_log_fsyncs | 向日志文件完成的fsync()写数量。 |
216 | Innodb_os_log_pending_fsyncs | 挂起的日志文件fsync()操作数量。 |
217 | Innodb_os_log_pending_writes | 挂起的日志文件写操作。 |
218 | Innodb_os_log_written | 写入日志文件的字节数。 |
219 | Innodb_page_size | 编译的InnoDB页大小(默认16KB)。许多值用页来记数;页的大小很容易转换为字节。 |
220 | Innodb_pages_created | 创建的页数。 |
221 | Innodb_pages_read | 读取的页数。 |
222 | Innodb_pages_written | 写入的页数。 |
223 | Innodb_row_lock_current_waits | 当前等待的待锁定的行数。 |
224 | Innodb_row_lock_time | 行锁定花费的总时间,单位毫秒。 |
225 | Innodb_row_lock_time_avg | 行锁定的平均时间,单位毫秒。 |
226 | Innodb_row_lock_time_max | 行锁定的最长时间,单位毫秒。 |
227 | Innodb_row_lock_waits | 一行锁定必须等待的时间数。 |
228 | Innodb_rows_deleted | 从InnoDB表删除的行数。 |
229 | Innodb_rows_inserted | 插入到InnoDB表的行数。 |
230 | Innodb_rows_read | 从InnoDB表读取的行数。 |
231 | Innodb_rows_updated | InnoDB表内更新的行数。 |
232 | Innodb_num_open_files | InnoDB目前打开的文件数。 |
233 | Innodb_truncated_status_writes | SHOW ENGINE INNODB STATUS 的输出时间将被截断。监控程序解析这个输出,可以测试这项之前和之后的值,以确认输出是否完整。 |
234 | Innodb_available_undo_logs | Innodb可用的undo_logs |
235 | Innodb_purge_trx_id_age | |
236 | Innodb_purge_view_trx_id_age | |
237 | Key_blocks_not_flushed | 键缓存内已经更改但还没有清空到硬盘上的键的数据块数量。 |
238 | Key_blocks_unused | 键缓存内未使用的块数量。你可以使用该值来确定使用了多少键缓存 |
239 | Key_blocks_used | 键缓存内使用的块数量。该值为高水平线标记,说明已经同时最多使用了多少块。 |
240 | Key_read_requests | 从缓存读键的数据块的请求数。 |
241 | Key_reads | 从硬盘读取键的数据块的次数。如果Key_reads较大,则Key_buffer_size值可能太小。可以用Key_reads/Key_read_requests计算缓存损失率。 |
242 | Key_write_requests | 将键的数据块写入缓存的请求数。 |
243 | Key_writes | 向硬盘写入将键的数据块的物理写操作的次数。 |
244 | Last_query_cost | 用查询优化器计算的最后编译的查询的总成本。用于对比同一查询的不同查询方案的成本。默认值0表示还没有编译查询。默认值是0。Last_query_cost具有会话范围。 |
245 | Last_query_partial_plans | |
246 | Max_used_connections | 服务器启动后已经同时使用的连接的最大数量。 |
247 | Not_flushed_delayed_rows | 等待写入INSERT DELAY队列的行数。 |
248 | Open_files | 打开的文件的数目。 |
249 | Open_streams | 打开的流的数量(主要用于记录)。 |
250 | Open_table_definitions | 被缓存的.FRM文件数量 |
251 | Open_tables | 当前打开的表的数量。 |
252 | Opened_files | 已经打开的文件的数量。 |
253 | Opened_table_definitions | 被缓存过的.FRM文件的数量。 |
254 | Opened_tables | 已经打开的表的数量。如果Opened_tables较大,table_cache 值可能太小。 |
255 | Performance_schema_accounts_lost | performance schema状态变量提供一些因为内存限制而没有创建或加载的instrument。 |
256 | Performance_schema_cond_classes_lost | |
257 | Performance_schema_cond_instances_lost | |
258 | Performance_schema_digest_lost | |
259 | Performance_schema_file_classes_lost | |
260 | Performance_schema_file_handles_lost | |
261 | Performance_schema_file_instances_lost | |
262 | Performance_schema_hosts_lost | |
263 | Performance_schema_locker_lost | |
264 | Performance_schema_mutex_classes_lost | |
265 | Performance_schema_mutex_instances_lost | |
266 | Performance_schema_rwlock_classes_lost | |
267 | Performance_schema_rwlock_instances_lost | |
268 | Performance_schema_session_connect_attrs_lost | |
269 | Performance_schema_socket_classes_lost | |
270 | Performance_schema_socket_instances_lost | |
271 | Performance_schema_stage_classes_lost | |
272 | Performance_schema_statement_classes_lost | |
273 | Performance_schema_table_handles_lost | |
274 | Performance_schema_table_instances_lost | |
275 | Performance_schema_thread_classes_lost | |
276 | Performance_schema_thread_instances_lost | |
277 | Performance_schema_users_lost | |
278 | Prepared_stmt_count | |
279 | Qcache_free_blocks | 查询缓存内自由内存块的数量。 |
280 | Qcache_free_memory | 用于查询缓存的自由内存的数量。 |
281 | Qcache_hits | 查询缓存被访问的次数。 |
282 | Qcache_inserts | 加入到缓存的查询数量。 |
283 | Qcache_lowmem_prunes | 由于内存较少从缓存删除的查询数量。 |
284 | Qcache_not_cached | 非缓存查询数(不可缓存,或由于query_cache_type设定值未缓存)。 |
285 | Qcache_queries_in_cache | 登记到缓存内的查询的数量。 |
286 | Qcache_total_blocks | 查询缓存内的总块数。 |
287 | Queries | 查询数。 |
288 | Questions | 已经发送给服务器的查询的个数。 |
289 | Select_full_join | 没有使用索引的联接的数量。如果该值不为0,你应仔细检查表的索引。 |
290 | Select_full_range_join | 在引用的表中使用范围搜索的联接的数量。 |
291 | Select_range | 在第一个表中使用范围的联接的数量。一般情况不是关键问题,即使该值相当大。 |
292 | Select_range_check | 在每一行数据后对键值进行检查的不带键值的联接的数量。如果不为0,你应仔细检查表的索引。 |
293 | Select_scan | 对第一个表进行完全扫描的联接的数量。 |
294 | Slave_heartbeat_period | 显示一个Slave的复制心跳间隔。 |
295 | Slave_last_heartbeat | Slave最后一次心跳。 |
296 | Slave_open_temp_tables | 当前由从SQL线程打开的临时表的数量。 |
297 | Slave_received_heartbeats | 累计每个SLAVE从最后一次启动、复位或更换master到现在收到的心跳数。 |
298 | Slave_retried_transactions | 启动后复制从服务器SQL线程尝试事务的总次数。 |
299 | Slave_rows_last_search_algorithm_used | |
300 | Slave_running | 如果该服务器是连接到主服务器的从服务器,则该值为ON。 |
301 | Slow_launch_threads | 创建时间超过slow_launch_time秒的线程数。 |
302 | Slow_queries | 查询时间超过long_query_time秒的查询的个数。 |
303 | Sort_merge_passes | 排序算法已经执行的合并的数量。如果这个变量值较大,应考虑增加sort_buffer_size系统变量的值。 |
304 | Sort_range | 在范围内执行的排序的数量。 |
305 | Sort_rows | 已经排序的行数。 |
306 | Sort_scan | 通过扫描表完成的排序的数量。 |
307 | Ssl_accept_renegotiates | 用于SSL连接的变量。 |
308 | Ssl_accepts | |
309 | Ssl_callback_cache_hits | |
310 | Ssl_cipher | |
311 | Ssl_cipher_list | |
312 | Ssl_client_connects | |
313 | Ssl_connect_renegotiates | |
314 | Ssl_ctx_verify_depth | |
315 | Ssl_ctx_verify_mode | |
316 | Ssl_default_timeout | |
317 | Ssl_finished_accepts | |
318 | Ssl_finished_connects | |
319 | Ssl_server_not_after | |
320 | Ssl_server_not_before | |
321 | Ssl_session_cache_hits | |
322 | Ssl_session_cache_misses | |
323 | Ssl_session_cache_mode | |
324 | Ssl_session_cache_overflows | |
325 | Ssl_session_cache_size | |
326 | Ssl_session_cache_timeouts | |
327 | Ssl_sessions_reused | |
328 | Ssl_used_session_cache_entries | |
329 | Ssl_verify_depth | |
330 | Ssl_verify_mode | |
331 | Ssl_version | |
332 | Table_locks_immediate | 立即获得的表的锁的次数。 |
333 | Table_locks_waited | 不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。 |
334 | Table_open_cache_hits | open_table缓存的命中数 |
335 | Table_open_cache_misses | open_table缓存的未命中数 |
336 | Table_open_cache_overflows | open_table缓存的溢出数 |
337 | Tc_log_max_pages_used | |
338 | Tc_log_page_size | |
339 | Tc_log_page_waits | |
340 | Threads_cached | 线程缓存内的线程的数量。 |
341 | Threads_connected | 当前打开的连接的数量。 |
342 | Threads_created | 创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。缓存访问率的计算方法Threads_created/Connections。 |
343 | Threads_running | 激活的(非睡眠状态)线程数。 |
344 | Uptime | 服务器已经运行的时间(以秒为单位)。 |
345 | Uptime_since_flush_status | 最近一次使用FLUSH STATUS 的时间(以秒为单位 |
分类:MySQL&MariaDB
mariadb用户管理
1、 创建用户
前置条件:必须拥有globalCREATE USER privilege或者mysql 数据库的INSERT privilege。
语法:
CREATEUSER user_specification
[, user_specification] …
user_specification:
user
[
IDENTIFIED BY [PASSWORD] ‘password’
| IDENTIFIED WITH auth_plugin [AS’auth_string’]
]
例:MariaDB>create user ‘user’@’host’ identified by ‘password’;
其中:
user为用户名。
host为主机。可以使用localhost、ip地址或者hostname,使用’%’表示不限制主机。
‘user’@’host’构成一个唯一用户。
password为密码。
2、 修改用户
前置条件:alteruser语句需要具备修改账号的权限并且对mysql库有insert权限。
语法:
SETPASSWORD [FOR user] =
{
PASSWORD(‘cleartext password’)
| OLD_PASSWORD(‘cleartext password’)
| ‘encrypted password’
}
例:MariaDB>set password for ‘user’@’host’ = PASSWORD(‘password’);
其中:
‘user’@’host’为需要设置密码的用户,不写for user为设置当前用户的密码, PASSWORD及OLD_PASSWORD对后面的明文‘password’进行加密处理,或者直接输入加密后的密码,如’*23AE809DDACAF96AF0FD78ED04B6A265E05AA257’。
3、 删除用户
语法:
DROP USER user [, user] …
例:MariaDB >dropuser ‘user’@’host’;
4、 限制账户资源
对单个账户可以设置的资源限制有
1. 每小时查询次数
2. 每小时更新次数
3. 每小时连接次数
4. 同时在线的连接个数
对应:GRANTOPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
例:MariaDB > GRANT ALL ON *.* TO ‘user’@’host’
IDENTIFIEDBY ‘password’
WITHMAX_QUERIES_PER_HOUR 20
MAX_UPDATES_PER_HOUR 10
MAX_CONNECTIONS_PER_HOUR 5
MAX_USER_CONNECTIONS 2;
当账户的限制非0时则会给资源使用计数。Server运行时给每个账户的使用资源计数,如果达到了连接次数限制则下一个连接将会被拒绝。同样地若达到了查询、修改等次数限制则会产生一个error信息。
每个账户各自进行资源计数而不是针对客户端。可以全局重置当前的每小时使用的资源计数,也可以针对指定的账户重置计数:
1. 将所有账户计数器清零使用FLUSH USER_RESOURCES语句。重新加载权限表语句也会清零计数器(FLUSH PRIVILEGES或mysqladmin reload命令)
2. 给特定账户清零计数器使用GRANT USAGE语句指定一个与原来一样的限制次数
计数器清零对于max_user_connections无效,系统重启会将所有的计数器清零。
5、 用户管理表user
用户信息存储在系统表mysql.user中,可以通过对user表的增删改查来实现对用户的管理。
User表字段及其含义:
mysql建表、索引以及SQL性能优化
1 前言
参考了部分网上资料整理而成。
2 设计部分
2.1 设计表注意事项
2.1.1 定义字段类型
尽可能精确地定义字段类型,包括类型和长度:如不要以字符类型声明纯数字字段,业务上tinyint够用的情况避免定义为int等。
2.1.2 尽可能使用not null
null需要更多的代码,更多的检查和特殊的索引逻辑。所以大多数时候应该使用not null,或者使用一个特殊的值,如0,-1作为默认值。
2.1.3 关于char 和varchar的选择
char类型定长,varchar类型变长。列长度不定,对空间要求高的情况下多使用varchar;列定长,对查询性能高的情况下多用char。
2.1.4 主键与外键
尽可能使用长度短的主键,在主键上无需建单独的索引。
外键会影响插入和更新性能,对于批量可靠数据的插入,建议先屏蔽外键检查。 对于数据量大的表,建议去掉外键,改由应用程序进行数据完整性检查。
2.2 设计索引注意事项
2.2.1 不同表之间的相同属性值的字段需一致:
不同表之间的相同属性值的字段,列类型,类型长度,是否非空,是否默认值,需保持一致,否则无法正确使用索引进行关联对比。
2.2.2 适合建索引的情况:
1、在经常需要搜索的列上,可以加快搜索的速度 。
2、在经常用在连接的列上,可以加快连接的速度 。
3、在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的 。
4、在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间 。
5、在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
2.2.3 不适合建索引的情况:
1、散列度很低的列,如性别。
2、有大量空值的列。
3、很少使用的列(很少作为条件或表连接条件的)。
4、频繁更新的列。
5、在一张表上不要建超过6个索引。
3 开发部分
3.1 不正确的使用索引列,可能会导致不使用索引,进行全表扫描
3.1.1 对索引列进行计算
不建议的写法:
Select col1,col2 from test where index_col/100 > 10;
应写为:
Select col1,col2 from test where index_col > 10*100;
3.1.2 对索引列进行拼接
不建议的写法:
Select col1,col2 from test where concat(first_name,’ ’,last_name = ‘ZHAN SAN’;
应写为:
Select col1,col2 from test where first_name = ‘ZHAN’ and last_name = ‘SAN’;
3.1.3 在索引列上使用is null或is not null
不建议的写法:
Select col1,col2 from test where price is not null;
逻辑上允许的情况下应写为类似如下的sql:
Select col1,col2 from test where price >=0;
3.1.4 在索引列上使用or
不建议的写法:
Select col1,col2 from test where first_name = ‘ZHAN’ or last_name = ‘SAN’;
应写为:
Select col1,col2 from test where first_name = ‘ZHAN’ union Select col1,col2 from test where last_name = ‘SAN’;
3.1.5 对索引列进行类型转换,或隐式的类型转换
不建议的写法:
如定义col1为char型
Select col1,col2 from test where col1 = 3;
应写为:
Select col1,col2 from test where col1 = ‘3’;
3.1.6 尽可能避免索引列在like的首字符使用通配符
不建议的写法:
Select col1,col2 from test where first_name like ‘%HA%’;
逻辑上允许的情况下应写为类似如下的sql:
Select col1,col2 from test where first_name like ‘ZHA%’;
3.1.7 如果索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引
Create index com_index on test (col1,col2,col3);
相当于建立了index(col1,col2,col3)、index(col1,col2)、index(col1) 3个索引。在查询时单独使用col2或col3是不会使用到该索引,必须使用col1才会使用到该索引。
3.2 一条SQL语句只能使用一个表的一个索引
在where条件中多个and的条件中,必须都是一个多列索引的key_part属性而且必须包含key_part1。各自单一索引的话,只使用遍历最少行的那个索引。
3.3 只查询需要的列,避免使用select *
Select * from test;
应写为:
Select col1,col2,col3 from test;
3.4 使用[not] exists 代替 [not] in
select col1,col2 from test where col1 in (select col3 from t2);
应写为:
select col1,col2 from test where exists (select 1 from t2 where test.col1 = t2.col3);
3.5 逻辑上能用union all的时候不要用union
union会对结果进行排序去重,union all则不会。如果已经确定数据不会包括重复行,或者你不在乎是否会出现重复的行时使用union all。
Select col1,col2 from test where col1 >=10 union Select col1,col2 from test where col2 >=10;
逻辑上允许的情况下应写为:
Select col1,col2 from test where col1 >=10 union all Select col1,col2 from test where col2 >=10;
3.6 没有必要时不要使用distinct 和order by
使用distinct 或order by会对结果集进行排序,在结果集较大的情况下会占用大量资源。
3.7 使用case when来避免多次扫描表
Select sum(col1) from test where col2 = 1;
Select sum(col1) from test where col2 = 2;
应写为:
Select sum(case when col2 = 1 then col1 else 0 end) as sum1, sum(case when col2 = 2 then col1 else 0 end) as sum2 from test;
3.8 大数据全表清空时使用truncate代替delete
Delete from test;
应写为:
Truncate table test;
3.9 查询少量记录时使用limit
加上 limit n可以增加性能。MySQL数据库会在找到n条数据后停止搜索,而不是继续往后查找下一条符合记录的数据。