1熄攘、 導入hellodb.sql生成數(shù)據(jù)庫
(1) 在students表中,查詢年齡大于25歲省店,且為男性的同學的名字和年齡
(2) 以ClassID為分組依據(jù)挑辆,顯示每組的平均年齡
(3) 顯示第2題中平均年齡大于30的分組及平均年齡
(4) 顯示以L開頭的名字的同學的信息
[root@Centos8 ~]# dnf install -y mariadb-server;systemctl enable --now mariadb
[root@Centos8 ~]# mysql < hellodb_innodb.sql
MariaDB [hellodb]> select name,age from students where age >25 and gender ='M';
+--------------+-----+
| name | age |
+--------------+-----+
| Xie Yanke | 53 |
| Ding Dian | 32 |
| Yu Yutong | 26 |
| Shi Qing | 46 |
| Tian Boguang | 33 |
| Xu Xian | 27 |
| Sun Dasheng | 100 |
+--------------+-----+
7 rows in set (0.001 sec)
MariaDB [hellodb]> select classid,avg(age) from students group by classid;
+---------+----------+
| classid | avg(age) |
+---------+----------+
| NULL | 63.5000 |
| 1 | 20.5000 |
| 2 | 36.0000 |
| 3 | 20.2500 |
| 4 | 24.7500 |
| 5 | 46.0000 |
| 6 | 20.7500 |
| 7 | 19.6667 |
+---------+----------+
8 rows in set (0.001 sec)
MariaDB [hellodb]> select classid,avg(age) from students group by classid having AVG(age) > 30;
+---------+----------+
| classid | avg(age) |
+---------+----------+
| NULL | 63.5000 |
| 2 | 36.0000 |
| 5 | 46.0000 |
+---------+----------+
3 rows in set (0.004 sec)
MariaDB [hellodb]> select * from students where name like 'L%';
+-------+-------------+-----+--------+---------+-----------+
| StuID | Name | Age | Gender | ClassID | TeacherID |
+-------+-------------+-----+--------+---------+-----------+
| 8 | Lin Daiyu | 17 | F | 7 | NULL |
| 14 | Lu Wushuang | 17 | F | 3 | NULL |
| 17 | Lin Chong | 25 | M | 4 | NULL |
+-------+-------------+-----+--------+---------+-----------+
3 rows in set (0.000 sec)
2、數(shù)據(jù)庫授權magedu用戶魔慷,允許192.168.1.0/24網(wǎng)段可以連接mysql
mysql8.0前只锭,創(chuàng)建并賦權
grant Usage on *.* to magedu@'192.168.0.%' identified by '123';
mysql8.0,必須先創(chuàng)建后賦權
create user magedu@'192.168.1.%' identified by '123';
grant Usage on *.* to magedu@'192.168.1.%';
2、總結mysql常見的存儲引擎以及特點院尔。
MyISAM 引擎特點
- 不支持事務
- 表級鎖定
- 讀寫相互阻塞蜻展,寫入不能讀,讀時不能寫
- 只緩存索引
- 不支持外鍵約束
- 不支持聚簇索引
- 讀取數(shù)據(jù)較快邀摆,占用資源較少
- 不支持MVCC(多版本并發(fā)控制機制)高并發(fā)
- 崩潰恢復性較差
- MySQL5.5.5 前默認的數(shù)據(jù)庫引擎
MyISAM 存儲引擎適用場景 - 只讀(或者寫較少)
- 表較凶莨恕(可以接受長時間進行修復操作)
MyISAM 引擎文件 - tbl_name.frm 表格式定義
- tbl_name.MYD 數(shù)據(jù)文件
- tbl_name.MYI 索引文件
InnoDB引擎特點
- 行級鎖
- 支持事務,適合處理大量短期事務
- 讀寫阻塞與事務隔離級別相關
- 可緩存數(shù)據(jù)和索引
- 支持聚簇索引
- 崩潰恢復性更好
- 支持MVCC高并發(fā)
- 從MySQL5.5后支持全文索引
- 從MySQL5.5.5開始為默認的數(shù)據(jù)庫引擎
InnoDB數(shù)據(jù)庫文件
- 所有InnoDB表的數(shù)據(jù)和索引放置于同一個表空間中
- 每個表單獨使用一個表空間存儲表的數(shù)據(jù)和索引
- 啟用:innodb_file_per_table=ON (MariaDB 5.5以后版是默認值)
- 參看:https://mariadb.com/kb/en/library/xtradbinnodb-server-system-variables/#innodb_file_pe
r_table
3栋盹、總結MySQL查詢緩存優(yōu)化總結片挂。
MySQL查詢緩存解釋
緩存完整的SELECT查詢結果,也就是查詢緩存贞盯。保存查詢返回的完整結果。當查詢命中該緩存沪饺,mysql會立刻返回結果躏敢,跳過了解析、優(yōu)化和執(zhí)行階段整葡,查詢緩存系統(tǒng)會跟蹤查詢中涉及的每個表件余,如果這些表發(fā)生變化,那么和這個表相關的所有數(shù)據(jù)都將失效
命中條件
Mysql判斷緩存命中的方法很簡單:緩存存放在一個引用表中遭居,通過一個哈希值引用啼器,這個哈希值包括如下因素,即查詢本身俱萍、當前要查詢的數(shù)據(jù)庫端壳、客戶端協(xié)議的版本等一些都有可能影響返回結果信息。
當判斷查詢緩存是否命中時枪蘑,Mysql不會解析损谦、正規(guī)化或者參數(shù)化的查詢語句,而是直接使用Sql語句和客戶端發(fā)送過來的其他原始信息(Sql)岳颇。任何字符上的不同照捡,例如注釋,任何的不同都會導致緩存不命中话侧,所以在編寫Sql語句的時候栗精,需要特別注意這一點,通常使用統(tǒng)一的編碼規(guī)則是一個好的習慣瞻鹏,在這里這個好習慣可能讓你的系統(tǒng)運行的更快
當查詢語句有一些不確定的數(shù)據(jù)時悲立,則不會被緩存鹿寨,例如白喊函數(shù)NOW()或者CURRENTDATE()的查詢不會被緩存
如果查詢語句中包含任何不確定的函數(shù),那么在查詢緩存中是不可能找到緩存結果的级历,即使之前剛剛執(zhí)行這樣的查詢
導致沒有命中條件
1释移、緩存碎片
2、內存不足
3寥殖、數(shù)據(jù)修改
特別注意
Mysql的查詢緩存在很多時候可以提升查詢性能玩讳,在使用的時候,有一些問題需要特別注意嚼贡。首先熏纯,打開查詢緩存對 讀,寫 操作都會帶來額外的消耗:
1粤策、讀查詢在開始之前必須先檢查是否命中緩存
2樟澜、如果這個讀查詢可以被緩存,那么當完成執(zhí)行后叮盘,Mysql若發(fā)現(xiàn)查詢緩存中沒有這個查詢秩贰,會將其結果存入查詢緩存,這會帶來額外的系統(tǒng)開銷
3柔吼、這對寫操作也會影響毒费,因為當向某個表寫入數(shù)據(jù)的時候,Mysql必須將對應表的所有緩存都設置失效愈魏。
4觅玻、對于存儲引擎InnoDB用戶來說,事務的一些特性會限制查詢緩存的作用培漏。當一個語句在事務中修改某個表溪厘,Mysql會將這個表對應的查詢緩存都設置失效。在事務提交前該表的查詢都無法被緩存牌柄,只能在事務提交后才能被緩存畸悬。因此長時間運行的事務,會大大降低查詢緩存的命中率
5珊佣、inner JOIN 和 其他連接 查詢 如果其中一個表數(shù)據(jù)發(fā)生變化 則直接導致 緩存失效
緩存配置參數(shù)
query_cache_type: 是否打開緩存
可選項
- OFF: 關閉
- ON: 總是打開
- DEMAND: 只有明確寫了SQL_CACHE的查詢才會吸入緩存
如果不想所有查詢都進入查詢緩存傻昙,但是又希望某些查詢走查詢緩存,那么可以將 query_cache_type 設置成 DEMAND 彩扔,然后在希望緩存的查詢上加上SQL_CACHE妆档。這雖然需要在查詢中加入額外的語法,但是可以讓你非常自由的控制那些查詢需要被緩存虫碉。相反如果不希望緩存 加上SQL_NO_CACHE
4贾惦、MySQL日志各類總結。
1. 概述
與大多數(shù)關系型數(shù)據(jù)庫,日志文件是MySQL數(shù)據(jù)庫的一個重要組成部分须板。MySQL有幾種不同的日志文件碰镜,通常包括錯誤日志文件,二進制日志习瑰,通用日志绪颖,慢查詢日志,等等甜奄。
這些日志能夠幫助我們定位mysqld內部發(fā)生的事件柠横,數(shù)據(jù)庫性能故障。記錄數(shù)據(jù)的變更歷史课兄,用戶恢復數(shù)據(jù)庫等等牍氛。
2. mysql日志組成
(1)錯誤日志:記錄啟動、運行或停止mysqld時出現(xiàn)的問題烟阐。
(2)通用日志:記錄建立的client連接和運行的語句搬俊。
(3)更新日志:記錄更改數(shù)據(jù)的語句。該日志在MySQL 5.1中已不再使用蜒茄。
(4)二進制日志:記錄全部更改數(shù)據(jù)的語句唉擂。還用于復制。
(5)慢查詢日志:記錄全部運行時間超過long_query_time秒的全部查詢或不使用索引的查詢檀葛。
(6)Innodb日志:innodb redo log
缺省情況下楔敌,全部日志創(chuàng)建于mysqld數(shù)據(jù)文件夾中。
能夠通過刷新日志驻谆。來強制mysqld來關閉和又一次打開日志文件(或者在某些情況下切換到一個新的日志)。
當你運行一個FLUSH LOGS語句或運行mysqladmin flush-logs或mysqladmin refresh時庆聘,則日志被老化胜臊。
對于存在MySQL復制的情形下,從復制server將維護很多其它日志文件伙判,被稱為接替日志象对。
3. 通用查詢日志
3.1 啟動和設置通用查詢日志
通用查詢日志記錄了mysql的所有用戶操作,包括啟動和關閉服務宴抚、執(zhí)行查詢和更新語句等勒魔。
mysql服務器默認情況下并沒有開啟通用查詢日志。如果需要通用查詢日志菇曲,可以通過修改my.ini或my.cnf配置文件來開啟冠绢。在my.ini或my.cnf的[mysqld]組下加入log選項或者啟動mysql時通過–log[=file_name]或-l [file_name]選項啟動它。假設沒有給定file_name的值常潮, 默認名是host_name.log弟胀。通用查詢日志將默認存儲在mysql數(shù)據(jù)目錄中的hostname.log文件中。hostname是mysql數(shù)據(jù)庫的主機名
my.in中形式如下:
[mysqld]
log[=path/[filename]]
mysqld依照它接收的順序記錄語句到查詢日志。這可能與運行的順序不同孵户。
不同于更新日志和二進制日志萧朝,它們在查詢運行后∠目蓿可是不論什么一個鎖釋放之前記錄日志检柬。
查詢日志包括全部語句,而二進制日志不包括僅僅查詢數(shù)據(jù)的語句竖配。
server又一次啟動和日志刷新不會產(chǎn)生新的一般查詢日志文件何址。
3.2 查看通用查詢日志
通用查詢日志中記錄了用的所有操作。通過查看通用查詢日志械念,可以了解用戶對mysql進行的操作头朱。通用查詢日志是以文本文件形式存儲在文件系統(tǒng)中的,可以使用文本編輯器直接打開通用日志文件進行查看龄减,Windows下可以使用記事本,Linux下可以使用vim项钮、gedit等
3.3 刪除通用查詢日志
通用查詢日志是以文本文件的形式存儲在文件系統(tǒng)中的。通用查詢日志記錄用戶的所有操作希停,因此在用戶查詢烁巫、更新頻繁的情況下,通用查詢日志會增長得很快宠能。DBA可以定期刪除比較早的通用日志亚隙,以節(jié)省磁盤空間,可以用直接刪除日志文件的方式刪除通用查詢日志违崇。要重新建立新的日志文件阿弃,可使用語句:
mysqladmin -flush logs
或者直接刪除日志文件。
3.4 通用查詢日志的系統(tǒng)變量
log_output=[none|file|table|file,table] #通用查詢日志輸出格式
general_log=[on|off] #是否啟用通用查詢日志
general_log_file[=filename] #通用查詢日志位置及名字
4. 二進制日志
二進制日志就是我們經(jīng)常說的binlog羞延,主要記錄mysql數(shù)據(jù)庫的變化渣淳。
二進制日志以一種有效的格式,并且是事務安全的方式包含更新日志中可用的所有信息伴箩。
二進制日志包含關于每個更新數(shù)據(jù)庫的語句的執(zhí)行時間信息入愧。他不包含沒有修改任何數(shù)據(jù)的語句,例如select語句
使用二進制日志的最大目的是最大可能地恢復數(shù)據(jù)庫嗤谚,因為二進制日志包含備份后進行的所有更新.
4.1 啟動和設置二進制日志
默認情況下棺蛛,二進制日志是關閉的,可以通過修改mysql的配置文件來啟動和設置二進制日志,my.ini中[mysqld]組下面有幾個設置是關于二進制日志的:
log-bin[=PATH/[FILENAME]]
expire_logs_days=10
max_binlog_size=100M
log-bin定義開啟二進制日志巩步;path表明日志文件所在的目錄路徑旁赊;
filename指定了日志文件的名稱,如文件的全名是filename.0001椅野,filename.0002等彤恶,除了上述文件之外钞钙,還有一個成為filename.index的文件,文件內容為所有日志的清單声离,可以使用記事本打開該文件filename.index文件的內容芒炼,當前只有一個binlog文件:.\C:\ProgramData\MySQL\MySQL Server 5.7\logs\bin-log.000001
expire_logs_days定義了mysql清除過期日志的時間,即二進制日志自動刪除的天數(shù)术徊。默認值為0本刽,表示“沒有自動刪除”。當mysql啟動或刷新二進制日志時可能刪除該文件
max_binlog_size定義了單個文件的大小限制赠涮,如果二進制日志寫入的內容大小超出給定值子寓,日志就會發(fā)生滾動(關閉當前文件,重新打開一個新的日志文件)笋除。不能將該變量設置為大于1GB或小于4096字節(jié)斜友。默認值是1GB,如果正在使用大事務 垃它,二進制日志文件大小還可能超過max_binlog_size的定義大小鲜屏。
可以通過SHOW VARIABLES語句來查詢日志設置,使用show VARIABLES 語句查看日志設置
可以看到log_bin為ON国拇,max_binlog_size為104857600字節(jié)洛史,換算為MB為100MB,MYSQL重新啟動之后酱吝,就可以看到新產(chǎn)生的文件后綴為.000001和.index的兩個文件也殖,文件名稱默認為主機名稱,我已經(jīng)在配置文件中指定了文件名务热,所以不會以默認主機名生成忆嗜,如下,因為我之前就開啟了二進制日志崎岂,所以重啟后后綴為000002:
4.2 查看二進制日志
mysql二進制日志是經(jīng)常用到的捆毫。當mysql創(chuàng)建二進制日志文件時,首先創(chuàng)建一個以filename為名稱该镣,以index為后綴的文件;
再創(chuàng)建一個以filename為名稱响谓,以“.000001”為后綴的文件损合。當mysql服務重新啟動一次,以“.000001”為后綴的文件會增加一個娘纷,
并且后綴名加1遞增嫁审;如果日志長度超過了max_binlog_size的上限(默認是1GB)也會創(chuàng)建一個新的日志文件
show binary logs語句可以查看當前二進制日志文件個數(shù)和文件名。mysql二進制日志并不能直接查看赖晶,如果要查看日志內容律适,
可以通過mysqlbinlog命令查看,使用show binary logs語句查看二進制日志文件個數(shù)和文件名:
可以看到辐烂,當前有兩個二進制日志文件,因為我把mysql服務重啟了一次捂贿,日志文件的個數(shù)和mysql服務啟動的次數(shù)相同纠修。每啟動一次mysql服務,將會產(chǎn)生一個新的日志文件,使用mysqlbinlog查看二進制日志,mysqlbinlog是一個單獨的exe厂僧,需要在命令行里執(zhí)行我們把binlog文件里面的內容導出到binlog.txt
4.3 刪除二進制日志
mysql的二進制日志可以配置自動刪除扣草,同時mysql也提供了安全的手動刪除二進制日志的方法,刪除所有的二進制日志文件使用
RESET MASTER;
執(zhí)行該語句颜屠,所有二進制日志將被刪除辰妙,mysql 會重新創(chuàng)建二進制日志,新的日志文件擴展名將重新從000001開始編號甫窟,只刪除部分二進制日志文件使用PURGE MASTER LOGS;語法如下:
PURGE {MASTER | BINARY} LOGS TO
'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
第一種方法指定文件名密浑,執(zhí)行該命令將刪除文件名編號比指定文件名編號小的所有日志文件
第二種方法指定日期,執(zhí)行該命令將刪除指定日期以前的所有日志文件粗井。
4.4 查看二進制日志里的操作記錄
使用如下命令:show binlog events;
比如想查看某一個二進制日志里面的記錄搜锰,但又不想用mysqlbinlog,可以使用show binlog events
比如我想查看’bin-log.000002′這個binlog文件的內容蒲祈,執(zhí)行如下命令:
可以看到’bin-log.000002′這個binlog文件記錄了哪些SQL命令,如果想知道binlog文件的創(chuàng)建時間谷婆,就需要mysqlbinlog工具來查看
4.5 使用二進制日志還原數(shù)據(jù)庫
如果mysql服務器啟用了二進制日志,在數(shù)據(jù)庫出現(xiàn)意外丟失數(shù)據(jù)時径玖,可以使用mysqlbinlog工具從指定的時間點開始(例如痴脾,最后一次備份)直到現(xiàn)在,或另外一個指定的時間點的日志中恢復數(shù)據(jù),要想從二進制日志恢復數(shù)據(jù)梳星,需要知道當前二進制日志文件的路徑和文件名赞赖。一般可以從配置文件(即my.cnf或者my.ini,文件名取決于mysql服務器的操作系統(tǒng))中找到路徑.
mysqlbinlog恢復數(shù)據(jù)的語法如下:
mysqlbinlog [option] filename |mysql -uuser -ppass
option是一些可選項冤灾,filename是日志文件名,比較重要的兩對option參數(shù)是
–start-datetime前域、–stop-datetime
–start-position、–stop–position
–start-date韵吨、–stop-date可以指定恢復數(shù)據(jù)庫的起始時間點和結束時間點
–start-position匿垄、–stop–position可以指定恢復數(shù)據(jù)的開始位置和結束位置
4.6 暫時停止二進制日志
如果在mysql的配置文件配置啟動了二進制日志,mysql會一直記錄二進制日志归粉,修改配置文件椿疗,可以停止二進制日志,
但是需要重啟mysql數(shù)據(jù)庫糠悼。mysql提供了暫時停止二進制日志的功能届榄。通過 SET SQL_LOG_BIN 語句可以使mysql暫停或者啟動二進制日志
SET sql_log_bin={0|1}
其中0是停止倔喂,其實啟用
5. 錯誤日志
錯誤日志文件包含了當mysqld啟動和停止時铝条,以及服務器在運行過程中發(fā)生任何嚴重錯誤時的相關信息靖苇。
在MYSQL中,錯誤日志也是非常重要的班缰,mysql將啟動和停止數(shù)據(jù)庫信息以及一些錯誤信息記錄到錯誤日志中
5.1 啟動和設置錯誤日志
在默認情況下贤壁,錯誤日志會記錄到數(shù)據(jù)庫的數(shù)據(jù)目錄下。如果沒有在配置文件中指定文件名鲁捏,則文件名默認為hostname.err芯砸。
例如:mysql所在服務器主機名為mysql-db,記錄錯誤信息的文件名為mysql-db.err给梅。如果執(zhí)行了FLUSH LOGS假丧,錯誤日志文件會重新加載
錯誤日志的啟動和停止以及日志文件名,都可以通過修改my.ini(或者my.cnf)來配置动羽。錯誤日志的配置項是log-error包帚。
在[mysqld]下配置log-error,在啟動錯誤日志运吓。如果需要指定文件名渴邦,則配置項如下:
[mysqld]
log-error=[path/[file_name]]
path為日志文件所在的目錄路徑,filename為日志文件名拘哨。修改配置項后谋梭,需要重啟mysql服務才生效.
5.2 查看錯誤日志
通過錯誤日志可以監(jiān)視系統(tǒng)的運行狀態(tài),便于及時發(fā)現(xiàn)故障倦青,修復故障瓮床。mysql錯誤日志是以文本文件形式存儲的,可以使用文本編輯器直接查看mysql錯誤日志,如果不知道日志文件的存儲路徑产镐,可以使用 show variables; 語句查看錯誤日志的存儲路徑隘庄。
語句如下:
show variables LIKE 'log_error';
5.3 刪除錯誤日志
mysql的錯誤日志以文本文件的形式存儲在文件系統(tǒng)中,可以直接刪除,對于mysql5.5.7以前的版本癣亚,flush logs可以將錯誤日志文件重命名為filename.err_old丑掺,并創(chuàng)建新的日志文件。但是從mysql5.5.7開始述雾,flush logs只是重新打開日志文件街州,并不做日志備份和創(chuàng)建的操作。
如果日志文件不存在玻孟,mysql啟動或者執(zhí)行flush logs時會創(chuàng)建新的日志文件,在運行狀態(tài)下刪除錯誤日志文件后唆缴,mysql并不會自動創(chuàng)建日志文件。flush logs在重新加載日志的時候取募,如果文件不存在琐谤,則會自動創(chuàng)建蟆技。所以在刪除錯誤日志之后玩敏,如果需要重建日志文件需要在服務器端執(zhí)行以下命令:
mysqladmin -u root -p flush-logs
或者在客戶端登錄mysql數(shù)據(jù)庫斗忌,執(zhí)行flush logs語句
flush logs;
刪除err文件,并用flush logs語句重建log-error文件.
6. 慢查詢日志
慢查詢日志是記錄查詢時長超過指定時間的日旺聚。慢查詢日志主要用來記錄執(zhí)行時間較長的查詢語句,通過慢查詢日志织阳,可以找出執(zhí)行時間較長、執(zhí)行效率較低的語句砰粹,然后進行優(yōu)化
6.1 啟動和設置慢查詢日志
mysql中慢查詢日志默認是關閉的唧躲,可以通過配置文件my.ini或my.cnf中的log-slow-queries選項打開,也可以在mysql服務啟動的時候使用–log–slow-queries[=file_name]啟動慢查詢日志碱璃。啟動慢查詢日志時弄痹,需要在my.ini或者my.cnf文件中配置long_query_time選項指定記錄閥值,如果某條查詢語句的查詢時間超過了這個值嵌器,這個查詢過程將被記錄到慢查詢日志
文件中肛真。
在my.ini或者my.cnf文件中開啟慢查詢日志的配置如下:
slow-query-log=1
slow_query_log_file="DESKTOP-EJUQL8D-slow.log"
long_query_time=10
path為日志文件所在目錄路徑,filename為日志文件名爽航。如果不指定目錄和文件名稱蚓让,默認存儲在數(shù)據(jù)目錄中文件名為hostname-slow.log,hostname是mysql服務器的主機名讥珍。參數(shù)n是時間值历极,單位是秒。如果沒有設置long-query_time選項衷佃,默認時間為10秒
6.2 查看慢查詢日志
mysql的慢查詢日志是以文本形式存儲的趟卸,可以直接使用文本編輯器查看。在慢查詢日志中纲酗,記錄著執(zhí)行時間較長的查詢語句衰腌,用戶可以從慢查詢日志中獲取執(zhí)行效率較低的查詢語句,為查詢優(yōu)化提供重要的依據(jù),查看慢查詢日志的一些參數(shù)
show variables like '%slow%';
6.3 刪除慢查詢日志
和通用查詢日志一樣觅赊,慢查詢日志也可以直接刪除右蕊。刪除后在不重啟服務器的情況下,需要執(zhí)行
mysqladmin -u root -p flush logs
重新生成日志文件吮螺,或者在客戶端登錄到服務器執(zhí)行 flush logs; 語句重建日志文件,官方mysql的慢查詢日志在這里有一個缺陷饶囚,就是查詢閥值只能是1秒或以上,如果要設置一秒以下就無能為力了,這時候如果想找出1秒以下的慢查詢SQL鸠补,可以使用percona提供的microslow-patch來突破限制,將慢查詢時間閥值減小到毫秒級別
7. 總結
平時應打開哪些日志
日志既會影響mysql的性能紫岩,又會占用大量磁盤空間。因此歇万,如果不必要揩晴,應盡可能少地開啟日志。
根據(jù)不同的使用環(huán)境贪磺,考慮開啟不同的日志。
例如開發(fā)環(huán)境中優(yōu)化查詢效率低的語句劫映,可以開啟慢查詢日志,或者生產(chǎn)環(huán)境中發(fā)現(xiàn)某些SQL執(zhí)行特別慢也可以開啟
如果磁盤空間不是特充足可以在高峰期間開啟刹前,在捕獲到查詢慢的SQL之后再關閉慢查詢日志
如果需要搭建復制環(huán)境泳赋,那么就一定要開啟二進制日志,如果數(shù)據(jù)特別重要也建議開啟二進制日志喇喉,以便數(shù)據(jù)庫損壞的時候也可以通過二進制日志
挽救一部分數(shù)據(jù)
通用日志無論在哪種情況下轧飞,一般不建議開啟