mysql常用命令与存储引擎

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

mariadb or mysql
 客户端程序;
  mysql:交换式工具
  mysqldump:备份工具
  mysqladmin:基于mysql协议管理mysqld
  mysqlimprot:数据导入工具;
 非客户端类的管理工具:
  myisamchk,myisampack
 如何获取程序默认使用的配置;
  mysql --print-defaults
  mysqld --print-defaults
 客户端使用的选项:
 -u:user
 -h:host
 -p:password
 -P:port
 --protocol={tcp|sock}
 -S:socket
 -D:database
 -C:--compress
 mysql -e “sql”:不进入交互式模式直接运行sql
  mysql -e "show databases;"
 
 mysql的使用模式:
  交换模式:
   客户端命令:\h,help
   服务器端命令:sql;
  脚本模式:
   方法一:mysql -uroot -h127.0.0.1 -p123456 < /tmp/test.sql
   例如:mysql -uroot -h127.0.0.1 -P3306 -p123456 -Dmysql </tmp/test.sql
   方法二:mysql> source /tmp/test.sql
 服务器端:
  获取可用参数列表:
  mysqld --verbose --help | more
  获取运行中的mysql进程的服务器参数:
   mysql>show global variables;
   mysql>show session variables;
   注意:其中有些参数支持运行时修改,立即生效,有些不支持,需要通过修改配置文件
   并重启服务器程序生效;
  修改服务器变量的值:
   mysql>help set
   全局:
   set global system_var_name=value;
   set @@global.system_var_name=value;
   会话:
   set [session] system_var_name=value;
   set  @@[session.]system_var_name=value;
  状态变量:用于保存mysqld运行中的统计数据的变量。
   msyql>show global status;
   msyql>show session status;

mysql数据类型:
 字符型、数值型、日期时间型、内建类型
 字符型:
  CHAR ,BINARY:定长数据类型
  VARCHAR,VARBINARY:变成数据类型;需要结束符;
  TEXT:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
  BLOB:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB
  EUNM,SET
 数值型:
  精确数值型:
   整形:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
   十进制型:DECIMAL,NUMERIC
  近似数值型
   浮点型:FLOAT
     DOUBLE
   BIT
 日期时间型:
  DATA
  TIME
  DATATIME
  TIMESTAMP
 修饰符:
  NOT NULL:非空约束
  NULL:
  DEFAULT 'STRING':指明默认值
  CHARACTER SET '':字符集
  COLLATION:使用的排序规则
  mysql>show character set;
  mysql>show collation;
  
  AUTO_INCREMENT:
   UNSIGNED
   PRIMARY KEY|UNIQUE KEY
   NOT NULL
   mysql>select LAST_INSERT_ID();
   
 sql_mode定义约束规则:
  set  global sql_mode='TRADITIONAL';
  常用mode:TRADITIONAL,STRICT_TRANS_TABLES,or STRICT_ALL_TABLES
 查看警告:
  show warning
 查看表状态: 
  show table status like  'table'\G;
 
 
 mysql数据文件类型:
  数据文件,索引文件
  重做日志,撤销日志,二进制日志、错误日志、查询日志、慢查询日志、中继日志
 
 创建索引:
  alter table test add index(age);
  create index index_name on test (name);
 查看索引:
  show indexs from test;
 查看执行计划:
  explain select * from test where id=1\G
 
 
 忘记管理员密码的解决办法;
  1.在/etc/my.cnf中加入 skip-grant-tables 
  2.启动mysqld服务使用update修改管理员密码:update user set password=password('123456') where user='root';
  3.重启mysqld
 
 查询缓存:
  通过查询语句哈希判断:哈希值考虑的因素包括
   查询本身,要查询的数据库,客户端使用协议版本,。。
   查询语句任何字符不同,都会导致缓存不能命中
  不会被缓存:
   查询中包含UDF,存储函数、用户自定义变量、临时表、系统表、或者包含列级权限的表、有着不确定值得函数:now();
  缓存相关变量:
   show global variables like '%quer%';
   query_cache_min_res_unit:查询缓存中内存块的最小分配单位;默认4k
   query_cache_limit:能缓存的最大查询结果;
    对于有着较大结果的查询语句,建议在select中使用sql_no_cache
   query_cache_size:查询缓存总共可用的内存空间,单位字节,必须是1024的整数倍
   query_cache_type:ON,OFF,DEMAND 
   query_cache_wlock_invalidate:如果某个表被其他的连接锁定,是否仍然可以从查询缓存中返回结果;默认值为OFF,表示可以返回。ON表示不允许返回。
  查询相关的钻拖变量 
   mysql> show global status like 'Qcache%';
   +-------------------------+-------+
   | Variable_name           | Value |
   +-------------------------+-------+
   | Qcache_free_blocks      | 0     |
   | Qcache_free_memory      | 0     |
   | Qcache_hits             | 0     |
   | Qcache_inserts          | 0     |
   | Qcache_lowmem_prunes    | 0     |
   | Qcache_not_cached       | 0     |
   | Qcache_queries_in_cache | 0     |
   | Qcache_total_blocks     | 0     |
   +-------------------------+-------+
   缓存命中率:Qcache_hits/(Qcache_hits+Com_select)
   
   
mysql的存储引擎;
 create table xx(
  ....
  ) engine=myisam (指定存储引擎)
 show  create table xx;  
 查看默认存储引擎:
 show variables like '%storage_engine%';
 查看mysql可以提供的存储引擎
 show engines
 修改表的存储引擎;ALTER TABLE my_table ENGINE=InnoDB
 
 InnoDB:处理大量的短期事务:数据存储于“表空间(table space)”中
  (1)所有表的数据和索引放到一个表空间中
   表空间文件:datadir定义的目录下
    ibddata1,ibdata2,...
  (2)每个表单独使用一个表空间存储表的数据和索引;
   innodb_file_per_table=on
   数据文件:tbl_name.ibd,tbl_name.frm
   
  Mariadb(xtradb)  
  并发:MVCC,间隙锁 
  索引:聚集索引、辅助索引
  性能:支持“自适应hash索引”、插入缓存区、预计操作
  备份:支持热备
  
 MyISAM:
  支持全文索引、压缩、空间函数;不支持事务,不支持行级锁
  崩溃后无法完全恢复
  适用场景:只读(或者写较少)、表较小(可以接受长时间的修复操作)
   Aria:crash-safe
  文件:tbl_name.frm:表格式定义
     tbl_name.MYD:数据文件
     tbl_name.MYI:索引文件
  特性:
   加锁和并发:表级锁
   修复:手工或自动修复:但可能丢失数据
   索引:非聚集索引
   延迟更新索引键;
   支持压缩表
 其他存储引擎:
  CSV:将普通的CSV(字段通过逗哥分隔)作为mysql表使用
  MRG_MYISAM:将多个MyISAM表合并成一个虚拟表;
  BLANKHOLE:类似于/dev/null,不存储任何数据
  MEMORY:所有数据保存于内存中,内存表;支持hash索引;表级锁




     本文转自阿伦艾弗森 51CTO博客,原文链接:http://blog.51cto.com/perper/2053013,如需转载请自行联系原作者




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 缓存 关系型数据库
Mysql的两种存储引擎以及区别
Mysql的两种存储引擎以及区别
14 1
|
1月前
|
存储 关系型数据库 MySQL
Mysql第七天,存储引擎
Mysql第七天,存储引擎
60 0
Mysql第七天,存储引擎
|
1月前
|
存储 关系型数据库 MySQL
【MySQL 数据库】5、存储引擎
【MySQL 数据库】5、存储引擎
100 0
|
2月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
39 0
|
3月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
24 0
|
30天前
|
SQL 关系型数据库 MySQL
|
1月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
162 0
|
2月前
|
存储 缓存 关系型数据库
MySQL - 存储引擎MyISAM和Innodb
MySQL - 存储引擎MyISAM和Innodb
|
1月前
|
存储 缓存 关系型数据库
MySQL两种存储引擎及区别
MySQL两种存储引擎及区别
21 4
MySQL两种存储引擎及区别
|
10天前
|
关系型数据库 MySQL
如何解决cmd命令窗口无法运行mysql命令的问题
如何解决cmd命令窗口无法运行mysql命令的问题
7 0