日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

day-44(2)mysql

發(fā)布時間:2023/12/8 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 day-44(2)mysql 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ps :
針對mysql的:
start transaction
drop table t1;
rollback;

無法回滾刪除操作,
其他的數(shù)據(jù)庫中也是一樣的, 但是除了oracle(flashback)

現(xiàn)在阿里云上, 數(shù)據(jù)庫不建議使用外鍵,效率問題




存儲引擎:

  create table t1(
  id int auto_increment primary key,
  name varchar(32) not null default ''
  )engine=Innodb charset=utf8;

分類:?
  Innodb
  1.(默認(rèn)版本包含5.5)
  2.支持事務(wù)
  3.不支持全文索引
  4.索引和數(shù)據(jù)都是在同一個文件中, .ibd
    表的結(jié)構(gòu)實(shí)在.frm文件中

  MyIsam
  1.(默認(rèn)版本5.5以下 5.3)
  2.不支持事務(wù)
  3.支持全文索引(類似百度搜索框在數(shù)據(jù)庫搜索)
  4..frm: 表結(jié)構(gòu)
  .MYD: 表數(shù)據(jù)
  .MYI: 表索引

  memory

  全文索引:
    sphinx

  1).文章,新聞等安全性要求不高的,選myisam
  2). 訂單,資金,賬單,火車票等對安全性要求高的,選用innodb
  3). 對于臨時中轉(zhuǎn)表,可以用memory型 ,速度最快

索引:

  作用: 加快查詢的速度
    類比: 新華字典的目錄, 可以將索引理解成一個特殊的文件, 然后如果沒有這個文件的話, 查詢是從前到后查找數(shù)據(jù)的,
    如果有這個文件的話, 會按照一種特殊的數(shù)據(jù)結(jié)構(gòu)(二叉樹)查找數(shù)據(jù)

  分類:
    主鍵索引: 加快查詢 + 不能重復(fù) + 不能為空 primary key
    唯一索引: 加快查詢 + 不能重復(fù) unique(列名)
    聯(lián)合唯一索引: 加快查詢 + 不能重復(fù) unique(列名1,列名2)
    普通索引: 加快查詢 index('列名')

  創(chuàng)建:
    主鍵索引:
      第一種:
        create table t1(
        id int auto_increment primary key,
        name varchar(32) not null default ''
        )engine=Innodb charset=utf8;
      第二種:
        alter table t1 change id id int auto_increment primary key;

    唯一索引:
      第一種:
        create table t1(
        id int auto_increment primary key,
        name varchar(32) not null default '',
        unique ix_name ('name')
        )engine=Innodb charset=utf8;
      第二種:
        create unique index 索引名稱(ix_name) on 表名(t1)(name);
        create unique index 索引名稱(ix_name_age) on 表名(t1)(name,age);

    普通索引:
      第一種:
        create table t1(
        id int auto_increment primary key,
        name varchar(32) not null default '',
        index ix_name ('name')
        )engine=Innodb charset=utf8;

      第二種:
        create index 索引名稱(ix_name) on 表名(t1)(name);

  刪除:
    drop 索引名稱(ix_name) on 表名(t1);

  查看索引:
    show index from 表名;

  場景:
    使用頻繁的列上加一個索引

  索引的缺點(diǎn):
    版本5.3以下:
    刪除和修改的速度就變慢了

    版本5.5以上:
    刪除和修改的速度不是特別的慢

    create table t12(
    id int auto_increment primary key,
    name varchar(32) not null default '',
    email varchar(32) not null default ''
    )engine=Innodb charset=utf8;


  索引的使用:

    explain 工具

      查看sql語句是否用的上索引, 或者查看sql執(zhí)行效率的工具

      給執(zhí)行的SQL語句出一個報告, 通過此報告來判斷sql語句的執(zhí)行效率和效果

      id
        查詢順序標(biāo)識
      select_type
        查詢類型
        SIMPLE 簡單查詢
        PRIMARY 最外層查詢
        SUBQUERY 映射為子查詢
        DERIVED 子查詢
        UNION 聯(lián)合
        UNION RESULT 使用聯(lián)合的結(jié)果
...
      table
        正在訪問的表名
      type
        查詢時的訪問方式,性能:all < index < range < index_merge < ref_or_null < ref < eq_ref < system/const
        ALL 全表掃描,對于數(shù)據(jù)表從頭到尾找一遍

        INDEX 全索引掃描,對索引從頭到尾找一遍

        RANGE 對索引列進(jìn)行范圍查找

        REF 根據(jù)索引查找一個或多個值

      CONST 常量
        表最多有一個匹配行,因?yàn)閮H有一行,在這行的列值可被優(yōu)化器剩余部分認(rèn)為是常數(shù),
        const表很快,因?yàn)樗鼈冎蛔x取一次。
        select nid from tb1 where nid = 2 ;
      SYSTEM 系統(tǒng)
        表僅有一行(=系統(tǒng)表)。這是const聯(lián)接類型的一個特例。
      possible_keys
        可能使用的索引

      key
        真實(shí)使用的

      key_len
        MySQL中使用索引字節(jié)長度

      rows
        mysql估計為了找到所需的行而要讀取的行數(shù) ------ 只是預(yù)估值

      extra
        該列包含MySQL解決查詢的詳細(xì)信息
      “Using index”
        比較好,使用了索引
      “Using where”
        比較好,使用了索引
      “Using temporary”
        沒用到索引,或sql語句有問題
      “Using filesort”

        沒用到索引,或sql語句有問題
  ES (elasticsearch )
  SQL語句的規(guī)則:
    - 不建議使用 like 進(jìn)行搜索    

    -不建議使用函數(shù)
    -類型不一致(規(guī)定的和傳入的不一致)
    -order by 排序的列沒有索引,不建議

  - 組合索引最左前綴
  如果組合索引為:(name,email)
  where name and email -- 使用索引
  where name -- 使用索引
  where email -- 不使用索引

慢日志查詢(slow log):

  日志文件: 記錄了執(zhí)行速度特別慢的SQL語句

  開啟的步驟:
    1. show variables like '%query%';
    2. set global long_query_time = 1; 設(shè)置慢查詢的時間
    3. set global slow_query_log = ON 開啟慢日志
    4. set global slow_query_log_file = E:\program\mysql-5.6.44-winx64\data\oldboy-slow.log 慢日志文件

?

普通日志記錄(general log):

  SQL審計 (記錄sql的操作語句)

  show variables like '%general%';
  +------------------+------------------------------------------------+
  | Variable_name | Value |
  +------------------+------------------------------------------------+
  | general_log | ON |
  | general_log_file | E:\program\mysql-5.6.44-winx64\data\oldboy.log |
  +------------------+------------------------------------------------+
  set global general_log = ON;


權(quán)限管理:

  創(chuàng)建用戶
  create user '用戶名'@'IP地址' identified by '密碼';
  creaee user 'zekai'@'192.168.1.123' identified by '123qwe';
  creaee user 'zekai'@'192.168.1.%' identified by '123qwe';
  create user 'zekai'@'%' identified by '123qwe';


  刪除用戶
    drop user '用戶名'@'IP地址';
  修改用戶
    rename user '用戶名'@'IP地址' to '新用戶名'@'IP地址';
  修改密碼
    set password for '用戶名'@'IP地址' = Password('新密碼')
  查看權(quán)限
    show grants for '用戶'@'IP地址'

  授權(quán):
    grant 權(quán)限 on 數(shù)據(jù)庫.表 to '用戶'@'IP地址' -- 授權(quán)

    grant select on db1.* to 'zekai'@'%';
    grant select on *.* to 'zekai'@'%';
    grant select, insert, delete on db1.* to 'zekai'@'%';
    *.* 所有
    select, insert, delete 權(quán)限
  取消授權(quán):
    revoke 權(quán)限 on 數(shù)據(jù)庫.表 from '用戶'@'IP地址'

  記住:
    flush privileges;

轉(zhuǎn)載于:https://www.cnblogs.com/klw1/p/11042208.html

總結(jié)

以上是生活随笔為你收集整理的day-44(2)mysql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。