40、複製
一種高可用、高效能的解決方案,一般用來建立大型的應用。
三個步驟:
(1)主伺服器把資料更新記錄到二進位制日誌中
(2)從伺服器把主伺服器的二進位制日誌拷貝到自己的中繼日誌中
(3)從伺服器重做日誌中的時間,把更新應用到自己的資料庫上
mysql的複製是非同步同步的,並非完全的主從同步。
從伺服器上可以啟動read-only選項:
[mysqld]
read-only
快照+複製的備份架構
41、效能調優
(1)選擇合適的cpu
資料庫應用一般分為兩類:
innodb儲存引擎一般都使用於oltp的資料庫應用:
使用者操作的併發量大
事務處理的時間一般比較短
查詢的語句較簡單,一般都走索引
複雜的查詢較少
olap是cpu密集型的操作
oltp是io密集型的操作
採購裝置時要注意提高io的配置
如果cpu支援多核,innodb plugin是更好的選擇。另外,如果你的cpu是多核,可以通過改變引數innodb_read_io_threads和innodb_write_io_threads來增大io的執行緒,這樣也能更充分利用cpu的多核效能。
(2)記憶體的重要性
(3)硬碟對資料庫效能的影響
傳統機械硬碟
固態硬碟
(4)合理地設定raid
raid基本思想:就是把多個相對便宜的磁碟組合起來,成為乙個磁碟陣列,使效能達到甚至超過乙個**昂貴、容量巨大的硬碟。
raid的作用是:
增強資料整合度
增強容錯功能
增加處理量或容量
(5)作業系統的選擇也很重要
(6)不同檔案系統對資料庫效能的影響
(7)選擇合適的基準測試工具
mysql提供了一些比較優秀的工具:sysbench和mysql-tpcc
42、linux的大小寫
linux下mysql安裝完後是預設:
1、區分表名的大小寫,不區分列名的大小寫;
2、用root帳號登入後,在/etc/my.cnf 中的[mysqld]後新增新增lower_case_table_names=1,重啟mysql服務,這時已設定成功:不區分表名的大小寫;
lower_case_table_names引數詳解:lower_case_table_names = 0其中 0:區分大小寫,1:不區分大小寫。
mysql在linux下資料庫名、表名、列名、別名大小寫規則是這樣的:
1、資料庫名與表名是嚴格區分大小寫的;
2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變數名也是嚴格區分大小寫的;
mysql在windows下都不區分大小寫。
3、如果想在查詢時區分字段值的大小寫,則:字段值需要設定binary屬性,設定的方法有多種:
a、建立時設定:
create table t(a varchar(10) binary);
b、使用alter修改:alter table `tablename` modify column `cloname` varchar(45) binary;
c、mysql table editor中直接勾選binary項。
在linux環境中的mysql預設設定下,資料庫和表名是區分大小寫的,但在windows中,mysql的資料庫和表名是不區分大小寫的。
(1)在任何系統中可以使用lower_case_tables_name=1。使用該選項的不利之處是當使用show tables或show databases時,看不出名字原來是用大寫還是小寫。
(2) 在linux中使用lower_case_tables_name=0,在windows中使用lower_case_tables_name=2。這樣了可以保留資料庫名和表名的大小寫。不利之處是必須確保在windows中查詢總是用正確大小寫引用資料庫名和表名。如果將查詢轉移到linux中,由於在linux中大小寫很重要,如果大小寫不正確,它們不工作。
例外:如果使用innodb表,在任何平台上均應將lower_case_tables_name設定為1,以強制將名轉換為小寫。
請注意在linux中將lower_case_tables_name設定為1之前,重啟mysqld之前,必須先將舊的資料庫名和表名轉換為小寫。
MySQL學習筆記第6課(共10課)
31 提交的sql語句 以下的sql語句會產生乙個隱式的提交操作,即執行語句後,會有乙個隱式的commit操作。另外注意的是,truncate table語句是ddl,因此雖然和delete整張表的結果是一樣的,但是它不能被回滾。32 對於事務操作的統計 考慮每秒事務處理的能力 tps transa...
python基礎教程共60課 第9課random
python基礎教程共60課 第9課random python 第9課 random 之前我們用了很多次的print和input方法,它們的作用是實現控制台的輸入和輸出。除此之外,python還提供了很多模組,用來實現各種常見的功能,比如時間處理 科學計算 網路請求 隨機數等等等等。今天我就來說說,...
MySQL學習筆記1 0
1.這兩種日誌有以下三點不同。redo log 是 innodb 引擎特有的 binlog 是 mysql 的 server 層實現的,所有引擎都可以使用。2.redo log 是物理日誌,記錄的是 在某個資料頁上做了什麼修改 binlog 是邏輯日誌,記錄的是這個語句的原始邏輯。3.redo lo...