MySql高级

高级MySql

  1. 启动

    mysqlserver mysql start

  2. 设置root用户密码

    /usr/bin/mysqladmin -u root -p root

  3. 设置开机自启

    chkconfig mysql on

  4. 查看开机启动服务

    ntsysv

  5. 目录结构
    • mysql数据库文件的存放路径

      /var/lib/mysql/
      - 配置文件目录
      >/usr/share/mysql
      - 项目命令目录
      >/usr/bin
      - 启停脚本命令
      >/etc/init.d/mysql

  6. 查看字符集

    show variables like 'character%';
    show variables like '%char%';

  7. 修改字符集
    • [client]

      default-character-set-utf8
      - [mysqld]
      >character_set_server-utf8
      >character_set_client-utf8
      >collation-servser-utf8_general_ci
      - [mysql]
      >defalut-character-set=utf8

MySql架构

  1. 连接层;
  2. 服务层;
  3. 引擎层;
  4. 存储层;

引擎区别

性能分析

  1. 性能下降,SQL变慢

  2. 执行时间长

  3. 等待时间长

    ****原因分析****

    • 查询语句写的烂
    • 索引失败
    • 关联查询太多join(设计缺陷或不得已的需求)
    • 服务器调优或各个参数设置(缓冲、线程数等)

索引

  1. 单值索引

    为一个字段加索引
    create index idx_user_name on user(name);

  2. 复合索引

    为多个字段添加索引
    create index inde_user_nameEmail on user(name,email);

所有JOIN情况

  1. select * from A inner join B on A.key=B.key;


  2. select * from A left join B on A.key = B.key;


  3. select * from A right join B on A.key = B.key;


  4. select * from A left join B on A.key = B.kye where B.key is null;


  5. select * from A right join B on A.key = B.key where A.key is null


  6. select * from A full outer join B on A.key = B.key


  7. select * from A full outer join B on A.key = B.key where A.key is null or B.key is null

索引

  1. 什么是:

    索引(Index)是帮助Mysql高效获取数据的数据结构,可以的的到所以的本质:索引是数据结构。
    简单的理解为:排好序的快查找数据结构。(查找 and 排序)
    在数据之外,数据库系统还维护这满足特定查找算法的数据结构,这些数据结构以某种方式(指向)数据,这样就可以咋这些数据结构上实现高级查找算法,这种数据结构,就是索引,
    一般的索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上
    平时说的索引如果没有特殊指明,都是指B树(多路搜索树,并不一定是二叉树)

  2. 优势

    提高数据检索效率,降低数据库IO成本高;
    降低数据库的排序成本,降低CPU的消耗;

  3. 劣势

    实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引也是占用空间的
    虽然索引大大提高了查询速度,同时却会降低更新表的速度,因为更新表时,MySql不仅要保存数据,还要保存一下索引文件,
    索引只是提高效率的一个因素,如果你的MySql有大数据量的表,就需要花时间研究建立最游侠的索引,或优化查询语句;

  4. 分类
    • 单值索引

      一个索引只包含单个列,一个表可以有多个单列索引;
      - 唯一索引
      >索引列的值必须是唯一的,但允许有空值
      - 复合索引
      >一个索引包含多个列
      - 基本语法
      - 创建
      >create [unique] index indexName on mytable(colummanme)
      >alter mytable add [unique] index [indexName] on(colummanme)
      - 删除
      >drop index[indexName] on mytable
      - 查看
      >show index from table_name;
      - alter 命令


  5. mysql索引结构
    • BTree索引
    • Hash索引
    • full-text全文索引
    • R-Tree索引
  6. 那些情况创建索引
    • 主键自动建立唯一索引
    • 频繁作为查询条件的字段应该创建索引;
    • 查询中与其他表关联的字段,外键关系建立索引
    • 频繁更新的字段不适合创建索引
    • where条件中用不到的字段不适合创建索引
    • 单键/组合索引的选择问题,who?(在高并发下倾向于创建组合索引)
    • 查询中排序的字段,排序字段若通过索引去访问,将大大提升排序速度;
    • 查询中统计或分组字段
  7. 那些情况不要创建索引
    • 表记录太少;
    • 经常增删改的
    • 数据重复且分布俊宇的表字段,包含许多重复的内容,建立索引没有太大意义;

性能分析

  1. MySql Query Optimizer(mysql内部调优)
  2. mysql常见瓶颈
    • CPU: CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。
    • IO:磁盘I/O瓶颈发生在装入数据远大于内存容量的时候;
    • 服务器的硬件性能瓶颈:top.free,iostat, vmstat来查看系统性能状态;
  3. Explain
    • 是什么(查看执行计划)

      使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySql是如何处理你的Sql语句的。分析你的查询语句或是表结构的性能瓶颈
      - 能干吗
      - 表的读取顺序
      - 数据读取操作的操作类型
      - 那些索引可以用
      - 呢些索引被实际使用
      - 表之间的引用
      - 每张表有多少行被优化器查询
      - 这么玩
      - Explain + SQL语句
      - 执行计划包含的信息
      - id
      1. id 相同,执行顺序,由上到下
      2. id 不同,如果是子查询,id的序号会递增,id值越大优先级越高,越优先被执行
      3. id 有相同有不同:id如果相同,可以认为是同一组,从上向下顺序执行;在所有组中,id值越大,优先级越高,越优先执行 衍生 = DERIVED
      - select_type
      1. simple
      >简单的select查询,查询中不包含子查询或者UNION
      2. primary
      >查询中若包含任何复杂的子部分,最外层查询则被标记为
      3. subquery
      >在select或where列表中包含了子查询
      4. derived
      >在from列表中包含的子查询被标记为derived(衍生)Mysql会递归执行这些子查询,把结果放在临时表中。
      5. union
      >若第一个select出现在UNION之后则被标记为union,若union包含在from子句的子查询中,外层select将被宝鸡微:derived
      6. union result
      >从union表中获取结果的select
      >查询的类型,主要用于区别普通查询、联合查询、子查询等复杂查询
      - table
      - type
      - possible_keys
      - key
      - key_len
      - ref
      - rows
      - Extra
      - 个字段解释
      - 热盛Case

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容