MySQL深入學習總結

      網友投稿 721 2025-04-01

      MySQL


      MySQL是瑞典的MySQL AB公司開發的典型的開源關系型數據庫管理系統,其中維護的都是二維表,類似于Excel表格;關系型數據庫除了MySQL,還有Oracle數據庫(甲骨文公司,閉源)、SQL Server(微軟,閉源);后來MySQLab被Sun公司收購,Sun公司又被甲骨文公司收購,所以現在MySQL是Oracle旗下產品。因害怕Oracle今后不再開放MySQL源代碼,其創始人重寫了一套關系型數據庫命名為MariaDB,其功能與MySQL基本沒有差別。

      關系型數據庫:MySQL、MariaDB、SQL Server、Oracle等

      非關系型數據庫(NOSQL):Redis、MongoDB、Hbase等

      安裝MySQL數據庫(5.5版本):yum -y install mariadb mariadb-server

      啟動MySQL:systemctl start mariadb.server

      開機自啟動:systemctl enable mariadb.server

      設置用戶名密碼:mysqladmin -uroot password 123456

      登錄數據庫:mysql -uroot -p123456

      SQL語句(92標準版SQL語句,適用于大部分關系型數據庫)

      DDL 數據定義語言 create drop

      DML 數據操縱語言 update delete insert

      DQL 數據查詢語言 select

      DCL 數據控制語言 grant

      (一)查看數據庫內容

      1.查看數據庫:show database;

      進入數據庫:use 庫名;例:use mysql;

      進入后,查看庫中的表:show tables;

      (二)數據庫及表的操作

      創建數據庫:create database 庫名;例:create database abc;

      刪除數據庫:drop database 庫名;例:drop database abc;

      創建表:create table 表名(字段1 數據類型1,字段2 數據類型2......);創建一個名為info的表,內含字段id和name,類型為整數和可變長字符串,()內是規定有多少位。

      例:create table info(id int(3),name varchar(10));

      查看表結構:desc 表名;例:desc info;

      show create table 表名;

      數據表內容的增刪改查

      增加(insert)

      插入一行數據:insert into 表名 values(值1,值2)

      查看剛剛插入表中的數據:select * from 表名;例:select * from info;

      一次性插入多行數據(中間的,可以分開多行數據):例:insert into info values(3,”xiaozhao”),(4,”xiaoqiang”);

      刪除(delete)

      刪除表中所有內容:delete from 表名;例:delete from info;

      刪除某一條數據:delete from 表名 where 字段=值;例:如果刪除上表4號數據,則 delete from info where id=4;

      修改(update)

      修改表中name字段所有內容:update info set name=“xiaoming”

      修改符合條件的值,update 表名 set 需要修改的字段=“新名稱” where 字段=值;例:修改表中的xiaozhao為xiaogang,則:update info set name=”xiaogang”where id=3;

      查看(select)

      查看表中內容:select * from 表名;例:select * from info;

      表結構(字段)相關操作

      查看表結構

      desc 表名;或者show creat table 表名;

      修改表結構

      增加一個字段:alter table 表名 add 字段名 字段類型;例,為info表增加一個年齡字段:alter table info add age int(3);

      注:如果想指定位置,則可在int(3)后寫first、after id、before

      刪除一個字段:alter table 表名 drop 字段名;例,刪除info表中age1字段:alter table info drop age;

      修改字段數據類型:alter table info modify 字段 更改的字段類型;例,修改age的類型為int(5):alter table info modify age int(5);

      修改字段順序,例,將name字段移到第一行:alter table info modify name varchar(10)first;

      修改已有字段的名稱,例,修改age為性別(sex):alter table info change age sex varchar(5);

      修改表名,例,將info修改為info1:alter table info rename info1;

      創建兩張表,第一張包含id、name、subject字段,第二張表包含id、source字段

      為表t1插入數據:

      insert into t1 values(1,"xiaoming","English"),(2,"xiaohong","English"),(3,"xiaogang","English");

      為表t2插入數據:

      為表2source字段插入數據:

      (五)創建新一個新庫

      創建一個新庫,指定字符編碼為utf8:create database abc charset=utf8;

      進入abc庫,創建名為學生的新表,內含名字、編碼字段:create table student(name varchar(10),code int(3) zerofill);

      創建名為info的新表,內含code、subject、score:create table info(code int(3) zerofill,subject varchar(10),score int(3));

      向student表中插入數據:insert into student values("張三",001),("李四",002),("王五",003),("甲六",004);

      向info表中插入數據:insert into info values(001,"數學",80),(002,"數學",75),(001,"語文",90),(002,"語文",80),(001,"英語",90),(002,"英語",85),(003,"英語",80),(004,"英語",70);

      order by排序(內含limit分頁)

      排序:以成績為標準對info表內數據升序排列:select * from info order by score;

      降序排列:select * from info order by score desc;

      查看info表中前兩條數據:select * from info limit 2;

      只顯示某一行:select * from info limit 偏移量,行數;例:偏移量從0開始,即第一行為0。

      根據表info中的數據按降序排列,并顯示出第一行數據:

      select * from order by score desc limit 1;

      注意:limit是用于分頁查看,偏移量是指從第幾行開始,第一行表示為0。

      group by分組

      根據表info對科目進行排序:select * from info group by subject;

      聚合函數

      聚合函數sum()求和,max()最大值,min()最小值,count()統計,avg()平均數。

      格式:select 函數(值)from 表名;

      根據score排序并列出最小值:select min(score) from info;

      去重

      distinct去重:格式,select distinct 字段 from 表名;

      select distinct subject from info;

      聚合

      問題1:查詢出所有學生信息,SQL語句怎么編寫:select a.code,a.name,b.subject,b.score from student a,info b where a.code=b.code;

      問題2:新學生小明,學號為005,需要將信息寫入學生信息表,SQL語句怎么編寫:insert into student values(“小明”,5);

      問題3:李四語文成績被登記錯誤,成績實際為85分,更新到考試信息表中,SQL語句怎么編寫:update student a ,info b set score=85 where a.name="李四" and b.subject="語文"and a.code=b.code;

      問題4:查詢出各科成績的平均成績avg(),顯示字段為:學科、平均分,請問SQL語句如何編寫:select subject,avg(score) from info group by subject;

      問題5:查詢出所有學生的各科成績,顯示字段為:姓名、學號、學科、成績,并以學號與學科排序,沒有成績的學生也需要列出,SQL怎么編寫:select a.name,a.code,b.subject,b.score from student a,info b where a.code=b.code order by name,subject;

      問題6:查詢出單科成績最高的,顯示字段為:姓名、學號、學科、成績,SQL語句如何編寫:select a.name,a.code,b.subject,max(b.score) from student a,info b group by subject;

      問題7:列出每位學生的各科成績,要求輸出格式:姓名、學號、語文成績、數學成績、英語成績,SQL怎么寫:select student.name,student.code,sum(if(info.subject="語文",info.score,0)) 語文成績,sum(if(info.subject="數學",info.score,0)) 數學成績,sum(if(info.subject="英語",info.score,0)) 英語成績 from student,info where student student.code=info.code group by student.name;

      在abc庫中創建一個新表:create table worker(salay int(10),id int(3));

      將student表和worker表進行全連接:select * from student union all select * from ?worker;

      全連接: union或union all

      1.兩張表的數據數量相同

      2.全連接內使用order by 沒有效果,可以對連接后的結果進行排序;

      3.union會合并相同的數據;

      授權與撤銷授權

      授權:grant 權限[all,insert,delete,update,select] on 庫.表 to '用戶'@'地址' identified by '密碼';

      撤銷權限:revoke 權限[all,insert,delete,update,select] on 庫.表 from '用戶'@'地址' ;

      查看用戶授權:show grants for '用戶'@'地址';

      數據類型

      數字--> tinyint(一個字節) smallint(兩個字節) mediumint(三個字節) int(四個字節) bigint(八個字節)float(浮點數,也就是小數)double ?bit ?zerofill

      auto_increment:自增

      字符串 ?char ?varchar(可變長字符串)

      時間 ???datetime(年月日時分秒) date(年月日) ?time(時分秒) year(年) now() ?length() year() lpad(str,n,pad)

      生成隨機數(0-1范圍):rand()

      if(值,t,f)

      ifnull(值1,值2)

      case when [值1] then [結果] ... else [默認值] end

      MySQL密碼

      忘記mysql密碼如何解決

      修改MySQL的root密碼:

      1.關閉MySQL :systemctl stop mysqld

      2.執行語句,安全登錄:mysqld_safe --skip-grant-table &

      3.免密登錄數據庫后,使用update語句修改密碼

      update mysql.user set password=password(“密碼”)where=”root”;

      殺死MySQL進程:kill -9 MySQL的pid(通過ps -aux查詢得到)

      重新啟動

      MySQL的命令選項:mysql ?-u ?指定用戶 ?-p密碼 -h 指定主機地址 -P 端口號 ?-e ?SQL語句

      例:mysql -uroot -p123123 -e ”use mysql;select user from user;”

      同理,在mysql中也可以執行系統命令,例:system ls

      設置字符編碼,在mysql配置文件/etc/my.cnf中[mysqld]下添加character_set_server=utf8

      MySQL內輸入:show variables like “character%”;查看字符編碼。

      索引(相當于目錄,可以快速找到數據)

      運維人員一般用不上,屬于開發要了解的

      索引的分類:

      普通索引: ???index

      唯一性索引:unique

      主鍵: ?????????primary key

      全文索引: ??fulltext

      創建索引

      創建表時,創建索引:create table 表名(字段 數據類型(長度),.....,index 索引名稱(字段名[length]));

      例:create table test(id int(3),name varchar(10),index idx_id(id));

      查看索引:show index from test\G;

      創建表后,創建索引(兩種方法)

      (1)create index 索引名 on 表名(字段[length]);

      (2)alter table 表名 add index 索引名稱(字段[length]);

      例:alter table info add index idx_code(code); (索引名稱規范idx_索引的字段名)此處不寫長度

      查看索引:show index from 表名\G;

      前綴索引:在創建索引時使用length指定使用該字段數據的前幾個字符做索引,通常用于數據比較大時;

      刪除索引

      刪除索引drop index 索引名稱 on 表名;

      例:刪除info表的索引idx_code:drop index idx_code on info;

      主鍵

      創建表時,添加主鍵:create table 表名(字段 數據類型,....,primary key(字段));

      創建表后,添加主鍵:alter table 表名 add primary key(字段);

      刪除主鍵:alter table 表名 drop primary key;

      全文索引 fulltext

      主要用于字段數據類型為text(文本文件)或varchar(可邊長字符串)。

      索引作用

      索引的作用

      (1)加快查詢速度

      (2)降低磁盤IO成本

      (3)加快表與表之間的連接

      (4)減少分組排序的時間

      索引的使用

      對于經常更新的數據字段,不要使用索引;

      表特別小的時候,不需要使用索引-->全表掃描(select語句)比使用索引查詢快時,不創建索引

      字段中數據唯一性比較差的,不適合創建索引

      索引應該盡量建立在字段中數據比較小的,如果指定數據比較長應該創建前綴索引。

      創建索引的字段盡量在where中使用。

      表100萬行數據,code=001 select * from where code=001;

      正常查詢:全表掃描

      使用索引查詢:name使用索引,只掃描索引列

      組合索引:

      假設有a b 兩個字段,創建索引 where a=1 and b=1

      MySQL查詢時,只會使用1個索引,所以先查詢a=1再查詢b=1,此時應該是用組合索引(a,b)

      索引失效:

      條件中有or

      使用Like加% 模糊查詢

      全表掃描比使用索引查詢快

      索引是表達式的一部分

      字段類型是字符串,數據沒有加“ ”

      事務

      是一種機制,其作用是保持數據一致性

      MySQL的事務主要用來處理操作量大,復雜度高的數據;innodb存儲引擎支持事務,MyISAM不支持事務

      事務的ACID特點:原子性、一致性、隔離性、持久性

      原子性:事務是一個整體,是不可分割的,事物中的所有操作要不都執行成功,要不都失敗;rollback(回滾)可以撤銷事務中已經執行的SQL語句;Innodb存儲引擎中通過undo log實現回滾

      一致性:當事務完成時,數據必須處于一致狀態,在事務開始之前數據處于一致狀態;當事務再進行時,數據可能處于不一致狀態;當事務執行完成后,數據必須處于一致狀態;

      隔離性:對數據進行修改的所有并發事務都是隔離的;以防止多個食物并發執行時由于交叉執行導致數據不一致;

      持久性:事務處理的結果都是永久的;

      手動開啟事務:begin;(開始)commit;(提交)rollback;(回滾)

      查看自動提交:show variables like “autocommit”;

      開啟/關閉自動提交:set antocommit=1/0;

      存儲引擎

      查看MySQL默認支持的搜索引擎:show engines\G;

      主要學習innodb和myisam,默認使用存儲引擎innodb,通過命令查看:show variables like “default_storage_engine”;

      創建表時指定存儲引擎:create table 表名(字段1 字段類型,字段2 字段類型,...) engine="存儲引擎";

      修改默認存儲引擎:set global default_storage_engine="存儲引擎";

      Innodb 支持事務 行級鎖 64TB;

      MyISAM不支持事務 表級鎖 256TB;

      MyISAM 存儲引擎表存儲為三個文件:

      .frm ?存儲表格式

      MySQL深入學習總結

      .MYD ?存儲數據

      .MYI ?存儲索引

      MyISAM 以讀為主,不頻繁更新的表,對數據一致性要求不高

      Innodb 以寫為主,對數據一致性要求比較高

      MySQL日志(重點)

      MySQL中包含6種日志:錯誤日志、查詢日志、慢查詢日志、二進制日志、中繼日志、元數據日志

      錯誤日志:和MySQL啟動相關的信息,mariadb默認路徑/var/log/mariadb/mariadb.log

      二進制日志(重點):記錄跟修改相關的SQL語句,例如updata insert delect create drop alter

      二進制日志有三種格式:

      語句

      混合

      將log-bin=mysql-bin寫入MySQL配置文件中,默認位置在/etc/my.cnf 開啟二進制日志,并指定日志文件名

      查看二進制日志文件:ls /var/lib/mysql/ ?標黑處

      查看二進制文件內容:mysqlbinlog mysql-bin.000001

      MySQL內查看二進制狀態:show master status;

      MySQL查看所有二進制日志:show master logs;

      MySQL內清除二進制日志:reset master;

      刪除指定二進制日志:purge master logs to “mysql-bin.000001”;

      刪除指定二進制日志之前:purge master logs before “日期 時間”;

      查看二進制日志過期時間:show variables like “expire_logs_days”;

      設置二進制日志過期時間:set global expire_logs_days=3;

      查看是否開啟二進制日志:show variables like "log_bin";

      查看二進制日志的緩存大小:show variables ?like "binlog_cache_size";

      查看二進制日志格式:show variables like "binlog_format";

      查詢日志與慢查詢日志

      查詢日志:記錄客戶端所有的語句,包括查詢語句(通常不開啟)

      開啟/關閉查詢日志:set global general_log=1/0

      慢查詢日志:記錄執行時間較長,超過long_query_time設定的值并且掃描數據行數不小于min_examined_row_limit的SQL語句。

      show variable like “long%”;默認單位是秒,可以精確到微秒

      show variables like “%row_limit”;

      開啟/關閉 慢查詢日志:set global slow_query_log=1/0

      設置慢查詢日志時間:set long_query_time=數值(默認單位是秒)

      配置文件/etc/my.cnf中的mysqld段指定 slow_query_log_file=路徑文件名

      數據庫備份

      備份策略:全備份、增量備份、差異備份

      熱備份 :數據庫在運行過程中進行備份,不需要對數據庫額外操作溫備份 :對表進行鎖定,表中數據不可以變化,此時數據庫還在運行過程中的備份??冷備份 :停止數據庫之后進行備份

      Mysql備份方法1(導出):select * from 表名 into outfile "路徑文件名";例:備份表student到根下的test:select * from student into outfile “/var/lib/mysql/student.txt”;

      注意:保存文件的目錄一定有mysql用戶權限

      導入表:load data infile “路徑文件名”into table 表名;

      將表導出為Excel文件:test:select * from student into outfile “/var/lib/mysql/student.csv”;

      安裝lrzsz:yum -y install lrzsz

      sz student.csv傳到桌面上

      MySQL自帶的備份工具 mysqldump

      mysqldump選項

      -u 指定用戶

      -P指定密碼

      -p指定端口

      -h指定主機地址

      在linux命令行,備份數據庫abc,導出sql文件,格式:mysqldump -u用戶 -p密碼 庫名 > 文件名.sql

      例:mysqldump abc > abc.sql

      在linux命令行,備份abc庫中的表,同樣也是導出sql文件:mysqldump -u用戶 -p密碼 庫名 表名 > 文件名.sql

      例:mysqldump abc student > student.sql

      備份表結構

      恢復數據庫,在數據庫中:source /路徑/備份文件.sql

      恢復在數據庫外:cat 備份文件.sql |mysql -u用戶 -p密碼 庫名 ??????????????mysql -u用戶 -p密碼 庫名 < 備份文件.sql

      mysqldumper 多線程并發執行備份,為每一個表創建一個備份文件

      基于二進制節點位置進行數據恢復

      mysqlbinlog --start-position=起始節點 --stop-position=結束節點 二進制名稱|mysql -uroot -p123123

      基于二進制日志時間進行數據恢復

      mysqlbinlog --start-datetime="起始時間" --stop-datetime="終止時間" 二進制日志名稱|mysql -uroot -p123123

      MySQL客戶端工具

      mysql

      mysqladmin 管理工具 mysqladmin -uroot password 123123

      mysqldump 數據導出工具

      mysqlpump 并行導出數據工具(5.7版本之后才有)

      mysqlcheck 表維護工具

      mysqlimport 數據導入工具 mysqlimport -uroot -p密碼 庫名 備份文件名

      MySQL5.7二進制包安裝

      yum安裝lrzsz,然后上傳MySQL二進制包:yum -y install lrzsz

      解包到usr下的src:tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /usr/src

      為了更好實現版本控制,我們為解包好的文件創建個軟連接:ln -s /usr/src/mysql-5.7.22-linux-glibc2.12-x86_64/ /usr/local/mysql

      創建MySQL程序用戶:useradd -M -s /sbin/nologin mysql

      進入MySQL目錄:cd /usr/local/mysql

      做一個環境變量:echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

      執行source命令使其立即生效:source /etc/profile

      初始化MySQL配置:mysqld --user=mysql --initialize --datadir=/usr/local/mysql/data

      記錄密碼:TaKm#R5lb8ms(每個生成的不同)

      將mysql啟動文件復制到/etc/init.d下:cp support-files/mysql.server /etc/init.d/mysqld

      修改cnf配置文件,默認應該在support-files中有my_default.cnf文件,如果沒有,自己上傳

      如果啟動不成功,大概率可能是,本機已經安裝過mysql或者mariadb,有殘留文件,yum -y remove卸載一下

      啟動MySQL:/etc/init.d/mysqld start

      使用剛剛生成的密碼登錄:mysql -uroot -pTaKm#R5lb8ms

      登錄后首先修改初始化密碼:set password=password(“123123”);

      安裝成功

      附:MySQL配置文件my.cnf

      由于在7.18開始,二進制包不再包含示例文件my-default.cnf,所以我從5.7.17版本中提取了樣例,但是發現里面也沒有太多項配置,my-default.cnf內容如下:

      # For?advice on?how to change settings please see# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html# *** DO?NOT?EDIT THIS FILE.?It‘s a template which will be copied to the# *** default location during install, and will be replaced if?you# *** upgrade to a newer version of MySQL.

      [mysqld]

      # Remove leading # and set?to the amount of RAM for?the most important data# cache?in MySQL. Start?at 70% of total RAM for?dedicated server, else?10%.

      # innodb_buffer_pool_size =?128M

      # Remove leading # to turn on?a very important data integrity option: logging# changes to the binary log between backups.

      #?log_bin

      # These are commonly set, remove the # and set?as required.

      # basedir = .....

      # datadir = .....

      # port = .....

      # server_id = .....

      # socket = .....

      # Remove leading # to set?options mainly useful for?reporting servers.

      # The server defaults are faster for?transactions and fast SELECTs.

      # Adjust sizes as needed, experiment to find?the optimal values.

      # join_buffer_size =?128M# sort_buffer_size =?2M# read_rnd_buffer_size =?2M

      sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

      主從復制(數據庫熱備份)

      主從復制主要通過二進制日志實現,在主庫上開啟二進制日志(修改相關的SQL語句),主庫將二進制日志發送到從庫,并寫入從庫的中繼日志中,從庫根據中繼日志的內容進行重做(重新執行一遍),從而達到主從數據一致。

      部署兩臺MySQL主機:一臺名為mysql-master,另一臺為mysql-slave。上傳mysql5.7二進制包,并將其解壓移動到usr/local下,命名為mysql5.7

      主從復制的優勢:

      1.如果主庫出現問題,可以切換到從庫上提供服務;

      2.從庫提供讀操作,可以減輕主庫I/O壓力;

      3.可以在從庫上做數據備份,避免備份期間影響主庫的性能;

      MySQL主從復制默認是異步復制;5.5版本開始支持半同步復制;

      二進制日志格式:語句 行 混合;7.6之前默認是語句模式復制;5.7.7之后默認是行模式復制;

      Mysql復制架構: 一主一從;一主多從;雙主復制;級聯復制;同源復制(多主一從);

      首先,主庫開啟二進制日志(配置文件中):log-bin=mysql-bin

      主庫更改配置文件中的server id=10,從庫等于11

      主庫需要對從庫進行授權,在主庫中執行SQL語句:grant replication slave on *.* to "repl"@"%" identified by "123123";

      主庫執行flush logs;再確定二進制日志文件:show master stautus;

      從庫指向主庫,在從庫中執行SQL語句:change master to master_user='repl',master_password='123123',master_host='192.168.1.100',master_log_file='mysql-bin.000004',master_log_pos=154;

      開啟從庫,在從庫執行SQL語句:start slave;

      查看從庫狀態:show slave status\G;

      上圖IO和SQ顯示yes,則主從復制就成功了。

      刪除二進制日志,首先在從庫停掉slave:stop slave;然后reset slave;就重置主從復制配置了。

      一臺從庫運行了一個月,增加一臺從庫,如何操作?

      在主庫上鎖表,只可以讀:flush tables with read lock;

      全量備份,在從庫上導入;開始配置主從;

      主庫解鎖: unlock tables;

      多源復制

      Innodb MyISAM

      sync_binlog -->將binlog寫入磁盤

      =1時 ?表示開啟

      =0時 ?表示關閉,mysql不控制二進制日志寫入磁盤,由操作系統控制

      =N ?延遲binlog寫入磁盤

      MySQL多線程復制

      保證從庫并發應用relay log能力,2核32核的CPU 128G內存,硬盤HDD TPS(每秒事務處理能力:3萬次)

      slave_paralel_type 指定并發復制的類型

      首先開啟主從復制,然后在從庫上指定多少個工作線程:set global slave_parallel_workers=4;

      從庫設置類型,此步設置前請stop slave;然后執行:set global master_info_repository=“table”;

      從庫執行設置:set global relay_log_info_repository=“table”;

      查看表結構:show creat 表名;如果搜索引擎不是InnoDB或MyISAM,可以修改:alter table slave_master_info engine="InnoDB/MyISAM ";

      開啟從庫:start slave;

      半同步復制

      主庫安裝插件

      install plugin rpl_semi_sync_master soname "semisync_master.so";

      set global rpl_semi_sync_master_enabled=1;

      從庫安裝插件

      install plugin rpl_semi_sync_slave soname "semisync_slave.so";

      set global rpl_semi_sync_slave_enabled=1;

      stop slave io_thread;

      start slave io_thread;

      show variables like "%semi_sync%"; 查看半同步復制的值

      show status like "rpl%"; 查看半同步復制的相關信息

      基于GTID復制

      GTID=source_id:事務id

      show variables like "gtid_mode"; ?查看gtid狀態

      set global gtid_mode=ON_PERMISSIVE;

      select * from mysql.gtid_executed;

      show master status;

      gtid_executed ?保存的是上一個binlog日志中GTID

      reset slave; 清除從庫配置后,配置信息保存在內存中,使用show slave status;還可以查看到信息;

      reset slave all;

      清除從庫配置后,使用show slave status; 查不到信息;

      change master to master_user="repl",master_password="123123",master_host="192.168.2.10",master_auto_position=1;

      不允許主從庫臨時開始gtid

      在配置文件/etc/my.cnf中[mysqld]加入

      gtid_mode=ON

      enforce_gtid_consistency=ON

      GTID復制可以在主從恢復時,自動根據GTID進行恢復;

      讀寫分離-->緩解主庫IO壓力,避免從庫寫數據

      基于代碼:

      基于代理中間件:

      mysql-proxy -->Atlas

      mycat

      MySQL數據庫壓測與性能

      MySQL數據庫性能指標:

      吞吐量:TPS/QPS

      補充說明:磁盤 IOPS-->每秒IO請求數

      磁盤吞吐量:每次IO操作產生的流量

      show status like "%Questions%";

      QPS:mysqladmin -uroot -p123123 -h 127.0.0.1 -i 1 -r ?extended|grep -i questions

      響應時間:

      1.例如現有一個訂單業務,要求5秒內響應

      2.當有50并發時,TPM為2000事務,95%

      3.100并發時,TPM為3500,55%

      并發性

      同時500在線,WEB 100并發請求,數據庫DB 50并發請求。

      查看最大連接數,默認值為151:show variables like "%max_connection%";

      附件: MySQL.docx 1.06MB 下載次數:0次

      CentOS MySQL SQL

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格怎么制作表格(Excel表格怎么制作表格和打印)
      下一篇:我弄不起來表格(我做的表格怎么找不到了)
      相關文章
      亚洲va在线va天堂va四虎| 亚洲男人第一无码aⅴ网站 | 亚洲精品国产日韩| 亚洲国产女人aaa毛片在线| 国产AⅤ无码专区亚洲AV| 亚洲国产成人久久笫一页| yy6080久久亚洲精品| 少妇亚洲免费精品| 九九精品国产亚洲AV日韩| 国产亚洲综合视频| 亚洲国产精品无码久久青草| 亚洲免费视频一区二区三区| 国产精品亚洲精品日韩已方 | 亚洲精品欧洲精品| 亚洲蜜芽在线精品一区| 亚洲色大成网站www永久| 亚洲日本在线免费观看| 亚洲国产模特在线播放| 色老板亚洲视频免在线观| 亚洲综合一区二区三区四区五区| 亚洲色偷偷色噜噜狠狠99网| 亚洲精品无码久久| 另类图片亚洲校园小说区| 亚洲日韩在线观看免费视频| 亚洲无av在线中文字幕| 亚洲Av永久无码精品三区在线| 亚洲尹人香蕉网在线视颅| 亚洲明星合成图综合区在线| 亚洲香蕉久久一区二区三区四区| 亚洲综合激情五月丁香六月| 自拍偷自拍亚洲精品偷一| 亚洲黄片毛片在线观看| 亚洲日韩aⅴ在线视频| 亚洲国产精品久久久久网站| 亚洲天堂一区二区三区| 亚洲人成网站999久久久综合| 另类专区另类专区亚洲| 国产亚洲精品美女久久久| 亚洲专区在线视频| 国产亚洲国产bv网站在线| 亚洲hairy多毛pics大全|