Time of Update: 2017-02-28
mysql> \s 或status都可以查詢到mysql狀態基本資料--------------mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1Connection id: 28035
Time of Update: 2017-02-28
mysql 熱備在營運中需定期備份mysql,為崩潰後的恢複資料做準備。一般分為冷備和熱備,冷備就是停掉mysql服務,直接cp檔案,但是在生產環境中,很 少有機會這樣,一般都是在mysql提供服務的時候就進行備份,因此這牽扯到資料一致性的問題。所以,在MyISAM儲存引擎下,我們的思路就是:鎖表 –>備份–>解鎖# 進入mysql環境 鎖表root@mysql : test> flush tables with read lock;# 在系統內容下
Time of Update: 2017-02-28
維護表有三個主要的目的:1、找到並修複損壞的表。對於MyISAM儲存引擎來說,表損壞通常是系統崩潰導致的。其他的引擎也會由於硬體的問題,MySQL本身的缺陷或者作業系統的問題導致索引的損壞。損壞的索引,會導致查詢返回錯誤的結果或者莫須有的主鍵衝突等問題,嚴重時還會導致資料庫崩潰。這類情況,可以嘗試check table來檢查是否發生了表損壞,有些儲存引擎不支援這個命令。可以使用repair table 來修複損壞的表,但同樣不是所有引擎都支援該命令。如果引擎不支援,可以使用alter操作重建表,
Time of Update: 2017-02-28
理解索引最好的辦法是結合執行個體,接下來分析一個例子。假設要設計一個線上約會網站,使用者資訊表有很多列,包括國家,地區,城市,性別,眼睛顏色等等。網站必須支援上面的各種組合來搜尋使用者,包括根據使用者的最後線上時間,評分等進行排序的限制。需要考慮是需要索引來排序還是先檢索資料再排序,因為使用索引排序會嚴格限制索引和查詢的設計。如果MySQL使用了某個索引的範圍查詢,也就無法再使用另一個索引或者是該索引的後續欄位進行排序了。接下來一步步討論:1、支援多種過濾條件country列的選擇性通常不高,但
Time of Update: 2017-02-28
一、壓縮索引MyISAM使用首碼壓縮來減少索引的大小,預設只壓縮字串,但是通過設定也可以對整數做壓縮。壓縮可以使用更少的空間,代價是某些操作可能更慢。特別是倒序的查詢,測試表明,對於CPU密集型的應用,查詢會很慢,特別是倒序。對於I/O密集型應用,查詢可能會不錯。可以在CREATE TABLE的語句中指定PACK_KEYS參數來指定索引壓縮方式。二、冗餘和重複索引重複索引:指在相同的列上按照相同的順序建立的相同類型的索引,要盡量避免重複索引,除非在同一列上建立不同類型的索引來滿足不同的查詢需求。
Time of Update: 2017-02-28
一、覆蓋索引索引是一種尋找資料的高效方式,但是MySQL也可以使用索引來直接擷取列的資料,這樣就不再需要讀取資料行。如果索引的葉子節點中已經包含要查詢的資料,那麼還有什麼必要回表查詢呢?如果一個索引包含或者說覆蓋所有需要查詢的欄位的值,我們就稱之為“覆蓋索引”。覆蓋索引的好處:1、索引條目通常遠小於資料行大小,所以如果只需要讀取索引,就極大的減少資料訪問量。這對MyISAM尤其正確,因為MyISAM能壓縮索引以變得更小。2、因為索引是按照順序儲存的,所以對於I/O密集型的
Time of Update: 2017-02-28
聚簇索引,並不是一種單獨的索引類型,而是一種資料存放區方式。InnoDB的聚簇索引實際上在同一個結構中儲存了B-Tree索引和資料行資訊。因為無法把資料行存放在兩個不同的地方,所以一個表只能有一個聚簇索引(不過可以通過覆蓋索引來類比,稍後再介紹)。這裡主要討論InnoDB引擎,InnoDB通過主鍵聚集資料,如果沒有主鍵會選擇一個非空的唯一索引,如果還沒有,InnoDB會隱式定義一個主鍵來作為聚簇索引。聚簇索引是一把雙刃劍,要仔細考慮。優點:1、可以把相關資料儲存在一起,例如實現電子郵件時,根據使
Time of Update: 2017-02-28
在工作中,有這樣一個需求,就是需要統計24個小時的相關資料.有的朋友認為簡單的一句group by就可以解決。其實不然,真正的統計,24個小時都得有資料的,不允許出現缺失的現象.其實這個有點像廢話,處理結果集ResultSet也可以,但為了減少JAVA的負擔和增強java代碼的可讀性,所以盡量用SQL語句,一次性把資料處理好.表結構,有三個欄位一看就明白Sql代碼CREATE TABLE `vardata` ( `Id` int(11) NOT NULL AUTO_INCREMENT,
Time of Update: 2017-02-28
本人工作中的實際應用.在採集資料的時候,要求資料擷取以後,不能重複.同時也要 求有多個執行個體同時運轉,保證資料擷取的連續性.因此總結了一下,做成了如下的小實驗. 核心代碼如下:表結構:只有3個欄位id,name,passwordSql代碼CREATE TABLE `tt` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `password` varchar(255)
Time of Update: 2017-02-28
一 物化視圖物化視圖,它是用於預先計算並儲存表串連或聚集等耗時較多的操作 的結果,這樣,在執行查詢時,就可以避免進行這些耗時的操作,而從快速的得到結果 。只有大型資料庫oracle10g,db2才支援這個功能,而MySQL5.1暫時還沒有這個功能。 本人通過事件調度和預存程序類比了物化視圖。下面大家一起來討論吧。^-^二 準備知識1)預存程序:玩過資料庫的人,都知道他是啥~,~2)事件調度:在
Time of Update: 2017-02-28
注意:這是安裝失敗版,所以mysql-proxy安裝的過程就沒必要看了。已經講過了mysql主從同步Atlas官方文檔:http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy.htmlmysql-proxy-0.8.1 寫主機也提供讀mysql-proxy-0.8.2
Time of Update: 2017-02-28
一、背景之前我寫過關於SQL Server的資料移轉自動化的文章:SQL Server
Time of Update: 2017-02-28
一、在已知MYSQL資料庫的ROOT使用者密碼的情況下,修改密碼的方法:1、在SHELL環境下,使用mysqladmin命令設定:mysqladmin –u root –p password “新密碼” 斷行符號後要求輸入舊密碼2、在mysql>環境中,使用update命令,直接更新mysql庫user表的資料:Update mysql.user set password=password(‘
Time of Update: 2017-02-28
必須明白的sql知識一,兩表外串連查詢現有兩個表A,B內容如下mysql> select * from A;+------+------+| id | Col1 |+------+------+| 1 | AA || 2 | BB || 3 | CC |+------+------+3 rows in set (0.00 sec)mysql> select * from B;+------+------+| id | Col2 |+------+
Time of Update: 2017-02-28
mysql儲存引擎InnoDB1,主體繫結構:預設7個後台線程,4個io thread(insert buffer、log、read、write),1個master thread(優先順序最高),1個鎖(lock)監控線程,1個錯誤監控線程。可以通過show engine innodb status來查看。新版本已對預設的read thread和write thread分別增大到4個,可通過show variables like 'innodb_io_thread%'查看。儲存引擎組成:緩衝池(
Time of Update: 2017-02-28
配置mysql+lvs+keeplived實現Mysql讀操作的負載平衡環境:test1192.168.46.131mastertest2192.168.46.130slave備份test庫test3調度器1、安裝與配置Keepalived首先在節點test1、test2上安裝Keepalived軟體,軟體安裝非常簡單。[root@test1 ]# yum install -y openssl-devel[root@test1 ~]# wget
Time of Update: 2017-02-28
mysql主從複製的實現1、MySQL複製的實現原理MySQL支援單向、雙向複製、非同步複製,複製過程中一個伺服器充當主伺服器,而一個或多個其它伺服器充當從伺服器。主伺服器將更新寫入一個二進位記錄檔中,並建立一個索引檔案以追蹤記錄檔迴圈。這些日誌可以記錄發送到從伺服器的更新。當一個從伺服器串連主伺服器時,記錄檔會通知主伺服器,從伺服器在日誌中讀取的最後一次成功更新的位置。接著,從伺服器在上次成功更新的位置處開始進入更新操作。更新完成後從伺服器開始進入等待狀態,等待主伺服器後續的更新。需要注意的是
Time of Update: 2017-02-28
我的my.cnf檔案是這樣的innodb_data_home_dir = /usr/local/mysql/varinnodb_data_file_path = ibdata1:10M:autoextendinnodb_log_group_home_dir = /usr/local/mysql/varinnodb_buffer_pool_size = 16Minnodb_additional_mem_pool_size = 2Minnodb_log_file_size =
Time of Update: 2017-02-28
1,binlog_cache_size和max_binlog_cache_size表示的為每個session的事物分配的緩衝一般的當插入或者修改資料的時候,不會立刻寫磁碟,一般會緩衝起來,緩衝的大小有binlog_cache_size 來控制mysql> show variables like"%binlog_cache%";+-----------------------+----------------------+| Variable_name| Value|+-
Time of Update: 2017-02-28
一,二進位記錄檔的作用Mysql的二進位日誌記錄的是所有mysql資料庫發生變更的資訊,因此對資料庫非常重要,二進位日誌的作用我概括了一下主要包含如下幾個方面:1、可以用於資料庫基於時間點的還原。2、可以用來分析資料庫發生更改的情況,比如程式的bug導致資料庫資料更改等等。3、二進位日誌還可以用來重建資料庫。二,二進位日誌相關的變數和參數三,配置二進位日誌1,開啟bin-log日誌,在my.cnf中修改指定了bin-log日誌的路徑,開啟日誌後需要myssqladmin flush