• information_schema库:information_schema库中的表大都是temporory表,都是只读的,不能进行更新、删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没有关联的文件。例如:

    use information_schema;
    select table_rows from TABLES where TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名';

    如果表使用的是InnoDB引擎,table_rows只是粗略估计值,要得到实际准确值还是用count(*)来统计读取吧

    For InnoDB tables, the row count is only a rough estimate used in SQL optimization. 
    (This is also true if the InnoDB table is partitioned.)
  • EXPLAIN解析SELECT语句执行计划: EXPLAIN与DESC同义,通过它可解析MySQL如何处理SELECT,提供有关表如何联接和联接的次序,还可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。为了强制优化器让一个SELECT语句按照表命名顺序的联接次序,语句应以STRAIGHT_JOIN而不只是SELECT开头。EXPLAIN为用于SELECT语句中的每个表返回一行信息。表以它们在处理查询过程中将被MySQL读入的顺序被列出。MySQL用一遍扫描多次联接(single-sweep multi-join)的方式解决所有联接。这意味着MySQL从第一个表中读一行,然后找到在第二个表中的一个匹配行,然后在第3个表中等等。当所有的表处理完后,它输出选中的列并且返回表清单直到找到一个有更多的匹配行的表。从该表读入下一行并继续处理下一个表。EXPLAIN通常可如下使用:

    1. explain select id,name from users where age > 20;
    2. 或者 explain extended select id,name from users where age > 20;show warnings;
  • JOIN代替子查询:MySQL子查询大多数时候执行起来比较慢,而JOIN效率高的多,所以选择使用合适的JOIN类型来替换子查询
  • BINARY / VARBINARY 与 BIT 的差异

    1. BIT(M)存储M bits的0/1序列,M介于1~64之间,须采用 b'value'标记方式指定一个BIT数值类型的值,如 INSERT INTO t SET b = b'1010';
    2. BIT类型的值是不可读的,"+ 0"或者用BIN()、CAST()之类的函数转换后方可读,如 SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t;
    3. BINARY / VARBIANRY 同 CHAR / VARCHAR 相似,除了 BIANARY / VARBINARY 只包含字节流,没有字符集的概念,排序和比较操作都是基于字节的数字值;
    4. BINARY(255) / VARBIANRY(65535) 允许的最大长度同 CHAR / VARCHAR 一样,但前者以字节而非字符为单位计算长度,后者是字符集相关的,VARCHAR若采用了UTF-8字符集编码则长度最大值很可能小于65535。

    下边是对于VARCHAR(M) 和 LONGTEXT的解释:

    VARCHAR(M)
    A variable-length string. M represents the maximum column length in characters.
    The range of M is 0 to 65,535. The effective maximum length of a VARCHAR is subject
    to the maximum row size (65,535 bytes, which is shared among all columns) and the
    character set used. For example, utf8 characters can require up to three bytes per
    character, so a VARCHAR column that uses the utf8 character set can be declared to
    be a maximum of 21,844 characters.

    LONGTEXT
    A TEXT column with a maximum length of 4,294,967,295 or 4GB (2^32 − 1) characters.
    The effective maximum length is less if the value contains multibyte characters.
    The effective maximum length of LONGTEXT columns also depends on the configured
    maximum packet size in the client/server protocol and available memory. Each LONGTEXT
    value is stored using a 4-byte length prefix that indicates the number of bytes in the value.
  • 几种索引的区别

    1. 聚簇索引(Clustered Index):也叫聚集索引,在叶子页(Leaf Page)中存储了完整的数据行,实际也是表的一种数据存储方式,这样的表也称索引组织表(Index Organized Table, IOT)。一个InnoDB表中通常只能有一个聚簇索引,被定义在主键上。MYISAM 不支持该索引类型,其索引文件(.MYI)和数据文件(.MYD)是相互独立的。

    INNODB和MYISAM的主键索引与二级索引的对比:可以看出MYISAM的主键索引和二级索引没有任何区别,主键索引仅仅只是一个叫做PRIMARY KEY的唯一非空的索引,因此 MYISAM 可以不设主键。


    2. 辅助索引(Secondary Index):又叫二级索引,指除聚簇索引之外的所有索引。InnoDB的二级索引的叶子节点包含主键值而不是行指针(Row Pointer),这减小了移动数据或者数据页面分裂时维护二级索引的开销,因为InnoDB不需要更新索引的行指针。
    3. 覆盖索引:指索引包含了满足查询结果的数据,另一种理解认为也应包含查询条件中所涉及的字段。其最大的好处就是避免了读取磁盘数据文件中的行,Innodb的辅助索引叶子节点包含的是主键列,所以主键一定是被索引覆盖的。

  • 主从复制: MySQL 在每个事务更新数据之前,由 Master 将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的,之后通知存储引擎提交事务。MySQL支持三种复制方式,实现了Data Distribution、Load Balancing、Backups、High Availability and Failover等特性。

    1. 基于语句复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。

    2. 基于行复制:MySQL5.0开始支持把改变的内容复制过去,而不是把命令在从服务器上执行一遍。

    3. 混合类型复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

    复制过程是通过三个线程来完成的,
    1. Master binlog输出线程:Master为每一个复制连接请求创建一个binlog输出线程,用于输出日志内容到相应的Slave;
    2. Slave I/O线程:在start slave之后,该线程负责从Master上拉取binlog内容放进自己的Relay Log中;
    3. Slave SQL线程:负责执行Relay Log中的语句。

  • max_connections 和 max_user_connectionsmax_connections默认是151,当MySQL与Apache Web服务器一起使用时,可以提高性能。mysqld实际上允许max_connections + 1客户端连接,额外的1个连接预留给具有超级权限的帐户使用。Linux或Solaris如果有可用的RAM,支持至少500到1000个并发连接甚至多达10000个;Windows限制open tables × 2 + open connections < 2048。max_user_connections指定一个非0值用来限定任何账号能同时打开的最大连接数,如果要针对特定账号进行限制可使用Create user或Alter user。
    mysql> ALTER USER 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;

    Setting Account Resource Limits:MySQL permits limits for individual accounts on use of these server resources

    Any statement that a client can issue counts against the query limit, unless its results are served from 
    the query cache. Only statements that modify databases or tables count against the update limit.

Mysql相关知识点总结(一)的更多相关文章

  1. sql注入原理+mysql相关知识点

    什么是SQL注入 sql就是经常说的数据库,而sql注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.SQL注入是比较常见的网络攻击 ...

  2. Mysql相关知识点梳理(一):优化查询

    EXPLAIN解析SELECT语句执行计划: EXPLAIN与DESC同义,通过它可解析MySQL如何处理SELECT,提供有关表如何联接和联接的次序,还可以知道什么时候必须为表加入索引以得到一个使用 ...

  3. MySQL自增列(AUTO_INCREMENT)相关知识点总结

      MySQL的自增列(AUTO_INCREMENT)和其它数据库的自增列对比,有很多特性和不同点(甚至不同存储引擎.不同版本也有一些不同的特性),让人感觉有点稍微复杂.下面我们从一些测试开始,来认识 ...

  4. mysql常见知识点总结

    mysql常见知识点总结 参考: http://www.cnblogs.com/hongfei/archive/2012/10/20/2732516.html https://www.cnblogs. ...

  5. MySQL相关参数总结

    保留个原文链接,避免被爬虫爬了过去,以便后续更正补充:https://www.cnblogs.com/wy123/p/11273023.html MySQL参数繁多,是一个需要根据具体业务.软硬件环境 ...

  6. 可能是全网最好的MySQL重要知识点 | 面试必备

    可能是全网最好的MySQL重要知识点 | 面试必备  mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后 ...

  7. MySQL重要知识点

    可能是全网最好的MySQL重要知识点 |  mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后不会有这个 ...

  8. MySQL/数据库 知识点总结

    书籍推荐 <SQL基础教程(第2版)> (入门级) <高性能MySQL : 第3版> (进阶) 文字教程推荐 SQL Tutorial (SQL语句学习,英文).SQL Tut ...

  9. 面试题总结:可能是全网最好的MySQL重要知识点

    标题有点标题党的意思,但希望你在看了文章之后不会有这个想法--这篇文章是作者对之前总结的 MySQL 知识点做了完善后的产物,可以用来回顾MySQL基础知识以及备战MySQL常见面试问题. 什么是My ...

随机推荐

  1. scala 读取文件遇到encode问题(Mac -> remote Linux)

    Source.fromFile(fileName)(enc: Encode),如果遇到错误: java.nio.charset.MalformedInputException: Input lengt ...

  2. Xcode插件失效以后的处理方法

    全在终端执行,依次输入如下命令 //获取DVTPlugInCompatibilityUUID字段 defaults read /Applications/Xcode.app/Contents/Info ...

  3. 机器学习技法:01 Linear Support Vector Machine

    Roadmap Course Introduction Large-Margin Separating Hyperplane Standard Large-Margin Problem Support ...

  4. (4.1)Spring MVC执行原理和基于Java的配置过程

    一.Spring MVC执行原理和基于Java配置的配置过程 (一)Spring MVC执行过程,大致为7步. 所有的请求都会经过Spring的一个单例的DispacherServlet. Dispa ...

  5. linux脚本定时备份数据库表(详解)

    数据库备份策略 备份的数据库 服务器:10.10.10.254.10.2.11.10 数据库:gps6 备份的表: user_info alarminfo electronic_fence jpush ...

  6. Mapper 动态代理方式

    Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法. Mapper接口开发 ...

  7. 【ASP.NET MVC 学习笔记】- 01 理解MVC模式

    本文参考:http://www.cnblogs.com/willick/p/3195560.html 1.MVC模式是软件系统的一种架构模式,它将软件分为三大模块: 模型(Model):封装业务逻辑以 ...

  8. ASP.NET Core 开源GitServer 实现自己的GitHub

    ASP.NET Core 2.0 开源Git HTTP Server,实现类似 GitHub.GitLab. GitHub:https://github.com/linezero/GitServer ...

  9. swift之函数式编程(二)

    本文的主要内容来自<Functional Programming in Swift>这本书,有点所谓的观后总结 在本书的Introduction章中: we will try to foc ...

  10. django-rest-framework之序列化

    前言:昨天学习了rest-framework序列化方面的知识,故写了博客记录一下.官网:http://www.django-rest-framework.org/tutorial/1-serializ ...