栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

mysql学习记录

mysql学习记录

mysql 学习记录

cancat()和concat_ws()函数

这两个函数都是将两个或多个字符串连接在一起的方法。
区别:
+ concat_ws() 第一个参数是分隔符
+ concat_ws() 如果有null值会忽略它
+ cancat() 如果有null 会直接返回null
示例:

select concat(user_id,' ', user_name,' : ',user_pwd)as user_info from users where user_id=29;
+------------------------------------------------------------------------------------------------------------+
| user_info                                                                                                  |
+------------------------------------------------------------------------------------------------------------+
| 29 xy_test : pbkdf2:sha256:50000$qHeEjSQW$f7ccbdb92d084be4bf89d1345057010ca4530bfa65a6a83bca3e66b46300e3ba |
show full processlist;

show full processlist 返回的结果是实时变化的,是对 mysql 链接执行的现场快照,用来处理突发事件非常有用。它可以查看当前 mysql 的一些运行情况,是否有压力,都在执行什么 sql,语句耗时几何,有没有慢 sql 在执行等等。

mysql> show full processlist
    -> ;
+------+-----------------+-----------------+-------------------+---------+---------+------------------------+-----------------------+
| Id   | User            | Host            | db                | Command | Time    | State                  | Info                  |
+------+-----------------+-----------------+-------------------+---------+---------+------------------------+-----------------------+
|    5 | event_scheduler | localhost       | NULL              | Daemon  | 4904362 | Waiting on empty queue | NULL                  |
| 1071 | root            | localhost:52588 | exchangeservicedb | Query   |       0 | init                   | show full processlist |
| 1072 | root            | localhost:52624 | exchangeservicedb | Sleep   |     565 |                        | NULL                  |
| 1073 | root            | localhost:52625 | exchangeservicedb | Sleep   |     565 |                        | NULL                  |
+------+-----------------+-----------------+-------------------+---------+---------+------------------------+-----------------------+
4 rows in set (0.08 sec)

mysql 链接执行的现场快照是存储在 information_schema 表中的,所以也可对其使用下面命令进行过滤排序等数据库查询操作:

SELECt id, db, USER, HOST, command, time, state, info FROM information_schema. PROCESSLIST WHERe command != 'Sleep' ORDER BY time DESC;

返回各字段含义:

  • Id:链接 mysql 服务器线程的唯一标识,可以通过 kill 来终止此线程的链接。
  • User:当前线程链接数据库的用户
  • Host:显示这个语句是从哪个 ip 的哪个端口上发出的。可用来追踪出问题语句的用户
  • db: 线程链接的数据库,如果没有则为 null
  • Command: 显示当前连接的执行的命令,一般就是休眠或空闲(sleep),查询(query),连接(connect)
  • Time: 线程处在当前状态的时间,单位是秒
  • State:显示使用当前连接的 sql 语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state 只是语句执行中的某一个状态,一个 sql 语句,已查询为例,可能需要经过 copying to tmp table,Sorting result,Sending data 等状态才可以完成
  • Info: 线程执行的 sql 语句,如果没有语句执行则为 null。这个语句可以使客户端发来的执行语句也可以是内部执行的语句
explain 命令

explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。

主要显示信息有:

  • select_type 表示对应行是是简单还是复杂的查询
  • possible_keys 这一列显示查询可能使用哪些索引来查找
  • key 这一列显示mysql实际采用哪个索引来优化对该表的访问
  • key_len 这一列显示了mysql在索引里使用的字节数
其他重要语句:
  • 查询显示表的相关信息:
    show table status like 'table_name' G;
    返回诸如表的名称、引擎、行数、最大容量、索引大小、创建修改时间等信息。
  • 拷贝已有表(顺便改变其引擎):
    create table new_table like old_table;  # 创建一张与old_table一样格式的新表 new_table
    alter table new_table engine=innodb;  # 修改新表引擎
    insert into new_table select * from old_table;  # 将原表内容复制到新表
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/585093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号