數據庫應用——MySQL日誌管理及事務

                                                 MySQL日誌管理及事務

一、日誌管理
日誌查詢命令:show variables like '%log%';
1、錯誤日誌
(1)記錄MySQL啓動和停止時,以及運行過程中發生的錯誤相關信息。默認保存在安裝路徑的data文件夾內,後綴爲.err。
(2)MySQL配置文件my.ini中log-error=選項用來指定保存錯誤日誌的位置和文件名
①MySQL必須對指定的文件夾有讀寫權限,否則無法操作文件
②log_warnings=0/1用於啓用警告信息
2、通用查詢日誌
(1)開啓後對服務器會產生較大壓力,默認爲不開啓
(2)配置文件中通過general_log=ON/OFF選項用來啓用或停止通用查詢日誌
(3)general_log_file=選項定義日誌位置,默認名爲host_name.log
3、二進制日誌
(1)記錄了所有更新了數據或者應潛在更新了數據的預計,主要目的是在恢復數據時能最大程度的恢復數據庫。該日誌默認開啓,在data文件夾內,以mysql-bin命名,數據大時,會自動分割成多個日誌文件,以數字作爲擴展名
(2)可使用mysqlbinlog查看二進制文件
(3)log-bin=master-bin設置日誌名
4、慢查詢日誌
(1)記錄執行時間超過long_query_time的SQL語句,可用於查詢語句優化
(2)通過slow_query_log=ON/OFF控制開啓,默認爲關閉
(3)可使用set global slow_query_log=ON;命令開啓
5、中繼日誌
(1)從主服務器的二進制日誌文件中複製而來的事件,並保存爲日誌文件。默認關閉
(2)relay-log=master-relay-bin
(3)relay-log-index=master-relay-bin.index
(4)主要用於主從服務器的從服務器
6、事務日誌
(1)記錄lnnoDB等支持事務的村喫引擎執行事務時產生的日誌
(2)事務性存儲引擎用於保證(ACID)原子性、一致性、隔離性和持久性;其不會寫到數據文件中,而是寫到日誌文件中

二、事務
1、概念
(1)是一種機制、一個操作哦序列,包含了一組數據庫操作命令,並且把所有命令作爲一個整體一起向系統提交或撤銷操作請求
(2)是一個不可分割的工作邏輯單元,在數據庫系統上執行併發操作時,事務是最小的控制單元
(3)適用於多用戶同時操作的數據庫系統的場景,如銀行、證券交易等
(4)通過事務的整體性保證事務的一致性
2、事務的ACID特點
(1)隔離性
①對數據進行修改的所有併發事務是彼此隔離的,表名事務必須是獨立的,它不應以任何方式依賴於或影響其他事務
②修改數據的事務可在另一個使用相同數據的事務開始之前訪問這些數據,或者在另一個使用相同數據的事務結束之後訪問這些數據
(2)持久性
①不管系統是否發生故障,事務處理的結果都是永久的
②一旦事務被提交,事務的效果會被永久的保留在數據中
(3)原子性
①原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,這和前面兩篇博客介紹事務的功能是一樣的概念,因此事務的操作如果成功就必須要完全應用到數據庫,如果操作失敗則不能對數據庫有任何影響。
(4)一致性
①一致性是指事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行之後都必須處於一致性狀態。

3、手動控制事務
(1)開始事務:begin
(2)提交事務:commit
(3)回滾事務:rollback
(4)自動提交控制:set autocommit=0/1

三、存儲引擎
1、存儲引擎簡介
(1)mysql中的數據用各種不同技術存儲在文件中,每種技術都使用不同的存儲機制、索引技巧、鎖定水平並最終提供不同的功能和能力,這系統不同的技術以及配套的功能在mysql中稱爲存儲殷勤
(2)存儲引擎是mysql將數據存儲在文件系統中的存儲方式或存儲格式
(3)mysql常用存儲引擎
MyISAM
InnoDB
(4)MyISAM:
①特點
1)不支持事務,也不支持外鍵
2)訪問速度快
3)對事務完整性沒有要求
4)MyISAM在磁盤上存儲成三個文件
5).frm文件存儲表定義
6)數據文件的擴展名爲.MYD (MYData)
7)索引文件的擴展名是.MYI (MYIndex)
8)表級鎖定形式,數據在更新時鎖定整個表
9)數據庫在讀寫過程中相互阻塞
10)會在數據寫入的過程阻塞用戶數據的讀取
11)也會在數據讀取的過程中阻塞用戶的數據寫入
12)數據單獨寫入或讀取,速度過程較快且佔用資源相對少
②應用場景
1)公司業務不需要事務的支持
2)單方面讀取或寫入數據比較多的業務
3)MyISAM存儲引擎數據讀寫都比較頻繁場景不適合
4)使用讀寫併發訪問相對較低的業務
5)數據修改相對較少的業務
6)對數據業務一致性要求不是非常高的業務
7)服務器硬件資源相對比較差
(5)InooDB
①特點
1)支持4個事務隔離級別
2)行級鎖定,但是全表掃描仍然會是表級鎖定
3)讀寫阻塞與事務隔離級別相關
4)能非常高效的緩存索引和數據
5)表與主鍵以簇的方式存儲
6)支持分區、表空間,類似oracle數據庫
7)支持外鍵約束,5.5前不支持全文索引,5.5後支持全文索引
②適用場景:對硬件資源要求還是比較高的場合
(6)csv存儲引擎
①以csv格式進行數據存儲
②所有列必須不能爲null
③不支持索引
④可以對數據文件直接編輯,保存文本文件內容
(7)performance_schema
①MySQL 5.5開始新增一個數據庫:PERFORMANCE_SCHEMA,主要用於收集數據庫服務器性能參數。並且庫裏表的存儲引擎均爲PERFORMANCE_SCHEMA,而用戶是不能創建存儲引擎爲PERFORMANCE_SCHEMA的表。MySQL5.5默認是關閉的,需要手動開啓
(8)MEMORY
①使用存儲在內存中的數據來創建表,而且所有的數據也都存儲在內存中
(9)MERGE
①mysql使用MRG_MyISAM(MERGE)實現水平分表
2、數據庫引擎選擇
(1)需要考慮每個存儲引擎提供的核心功能及應用場景
(2)支持的字段和數據類型
①所有引擎都支持通用數據類型
②並非所有引擎都支持其他的字段類型,如二進制對象
(3)鎖定樂行:不同存儲引擎支持不同級別鎖定
①表鎖定
②行鎖定
3、存儲引擎的操作
(1)查看存儲引擎:show engines;
(2)查看現有表正在使用的存儲引擎
show table status from databasename where name=tablename
(3)配置存儲引擎
①alert table tablename engine=MyISAM;
②vim my.cnf>default-storage-engine=InnoDB;
③create table engine test(id int) engine=MyISAM;
④Mysql_convert_table_format轉化存儲引擎

1)yum install perl-DBI perl-DBD-MySQL -y
2)/usr/local/mysql/bin/mysql_convert_table_format --user=root --password=’111111’ --sock=/tmp/mysql.sock auth

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章