天天看点

mysql常用命令与存储引擎

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,如需转载请自行联系原作者