Time of Update: 2017-01-19
在MySQL世界裡,HAProxy 通常來作為軟體負載平衡器使用。彼得.博羅什在過去的郵件中解釋了如何使用percona xtradb叢集(pxc)來對其設定。所以它只發送查詢到可應用的節點。同樣的方法可用於常規主從設定來讀取負載並分散到多個從節點。不過,使用MySQL複製,另一個因素開始發揮作用:複寫延遲。在這種情況下,被提及到的 Percona xtraDB
Time of Update: 2017-01-19
MySQL5.6有很多新的特性,其中很多人都感興趣的一條就是全域事務序號功能(GTIDs)。而大家都對這一特性高度興趣的原因也很好理解,即:本來重新串連從伺服器和一個新的主伺服器一直是件很麻煩的事,然而在啟用GTIDs功能之後就變得簡單易行。可是,GTIDs的使用不單單是用單獨的標識符替換舊的二進位記錄檔/位置,它也採用了新的複製協議。假如你還不太明白這些,那你可以在這篇文章裡學點什麼。複製協議:新的 VS 舊的
Time of Update: 2017-01-19
近日ORACLE發布幾個新的功能在最新的Mysql5.7.2的版本上,由此有了此篇文章。大多數的改善是在資料庫效能和複製相關的功能上,這個新版本會帶給我們不可思議的效果。在這篇文章裡,我將要用一些簡單的步奏來嘗試瞭解這新的多源複製工作原理以及我們怎樣進行自己的測試。需要說明的是,這還是一個開發版本,不是給生產環境準備的。因此這篇文章是打算給那些想瞭解此新功能的人,看看它是如何在應用中工作的,都是在臨時環境中進行相關操作。什麼是多源複製?首先,我們需要清楚
Time of Update: 2017-01-19
大多數使用 WordPress 搭建的網站,其後台都是 MySQL 資料庫,經常我們需要定製 WordPress 的功能,這裡我們列表 10 個最有用的 WordPress 的資料庫查詢,你需要一個資料庫的管理工具,例如 phpMyAdmin 或者 Navicat 等來執行這些 SQL 陳述式。1. 將所有檔案的作者改為另外一個使用者在修改之前,你先要知道兩個不同使用者的 ID,你可以在 WP 背景 Author & User 頁面中找到這個
Time of Update: 2017-01-19
MySQL 系統會在記憶體(MEMORY)和磁碟(MyISAM)中建立暫存資料表,如何能知道在磁碟中建立了多少暫存資料表以及在記憶體中建立多少暫存資料表呢?你可以通過下面命令獲知: mysql> SHOW GLOBAL STATUS LIKE 'Created_tmp%tables';+-------------------------+----------+| Variable_name | Value |+-----------------------
Time of Update: 2017-01-19
繼續做以下的前期準備工作: 建立一個測試資料庫TestDB; create database TestDB; 建立測試表table1和table2; CREATE TABLE table1 ( customer_id VARCHAR(10) NOT NULL, city VARCHAR(10) NOT NULL, PRIMARY KEY(customer_
Time of Update: 2017-01-19
啥是集合操作?通常來說,將聯結操作看作是表之間的水平操作,因為該操作產生的虛擬表包含兩個表中的列。而我這裡總結的集合操作,一般將這些操作看作是垂直操作。MySQL資料庫支援兩種集合操作:UNION DISTINCT和UNION ALL。與聯結操作一樣,集合操作也是對兩個輸入進行操作,並產生一個虛擬表。在聯結操作中,一般把輸入表稱為左輸入和右輸入。集合操作的兩個輸入必須擁有相同的列數,若資料類型不同,MySQL資料庫自動將進行隱式轉換。同時,結果列的名稱由左輸入決定。前期準備準備測試表table1
Time of Update: 2017-01-19
前言現在系統的各種業務是如此的複雜,資料都存在資料庫中的各種表中,這個主鍵啊,那個外鍵啊,而表與表之間就依靠著這些主鍵和外鍵聯絡在一起。而我們進行業務操作時,就需要在多個表之間,使用sql語句建立起關係,然後再進行各種sql操作。那麼在使用sql寫出各種操作時,如何使用sql語句,將多個表關聯在一起,進行業務操作呢?而這篇文章,就對這個知識點進行總結。聯結查詢是一種常見的資料庫操作,即在兩張表(多張表)中進行匹配的操作。MySQL資料庫支援如下的聯結查詢:
Time of Update: 2017-01-19
從一個問題開始最近銀行這個事情鬧的比較厲害啊,很多儲戶的錢放在銀行,就不翼而飛了,而銀行還不管不問,說是使用者的責任,打官司,使用者還能輸了,這就是“社會主義”。咱還是少發牢騷,多種樹,莫談國事。說到銀行存錢,就不得不說一下從銀行取錢這件事情,從ATM機取錢這件簡單的事情,實際上主要分為以下幾個步驟: 登陸ATM機,輸入密碼; 串連資料庫,驗證密碼; 驗證成功,獲得使用者資訊,
Time of Update: 2017-01-19
前些年,HandlerSocket的橫空出世讓人們眼前一亮,當時我還寫了一篇文章介紹了其用法梗概,時至今日,由於種種原因,HandlerSocket並沒有真正流行起來,不過慶幸的是MySQL官方受其啟發,研發了基於InnoDB的Memcached外掛程式,總算是在MySQL中延續了NoSQL的香火,以前單獨架設Memcached伺服器不僅浪費了記憶體,而且還必須自己維護資料的不一致問題,有了Memcached外掛程式,這些問題都不存在了,而且藉助MySQL本身的複製功能,我們可以說是變相的實現了
Time of Update: 2017-01-19
對於一些資料量較大的系統,資料庫面臨的問題除了查詢效率低下,還有就是資料入庫時間長。特別像報表系統,每天花費在資料匯入上的時間可能會長達幾個小時或十幾個小時之久。因此,最佳化資料庫插入效能是很有意義的。經過對MySQL innodb的一些效能測試,發現一些可以提高insert效率的方法,供大家參考參考。1. 一條SQL語句插入多條資料。常用的插入語句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`)
Time of Update: 2017-01-19
問題 :我在看以前的一個開發人員的代碼時看到 WHERE p.name <=> NULL在這個查詢語句中 <=>符號是什麼意思啊?是不是和 =號是一樣啊?還是一個語法錯誤啊?但是沒有顯示任何錯誤或者異常。我已經知道了mysql中的 <> = !=等符號。 最佳回答 : 和=號的相同點像常規的=運算子一樣,兩個值進行比較,結果是0(不等於)或1(相等);換句話說:'A'
Time of Update: 2017-01-19
SQL注入語句有時候會使用替換查詢技術,就是讓原有的查詢語句查不到結果出錯,而讓自己構造的查詢語句執行,並把執行結果代替原有查詢語句查詢結果顯示出來。例如:原本查詢語句是複製代碼 代碼如下:select username,email,content from test_table where user_id=uid;其中uid,是使用者輸入的。正常顯示結果會出現使用者名稱,使用者郵箱,使用者留言內容。但是如果uid過濾不嚴,我們可以構造如下SQL語句來獲得任意資料表資訊。複製代碼
Time of Update: 2017-01-19
如果想知道MySQL資料庫中每個表佔用的空間、表記錄的行數的話,可以開啟MySQL的 information_schema 資料庫。在該庫中有一個 TABLES 表,這個表主要欄位分別是:TABLE_SCHEMA : 資料庫名TABLE_NAME:表名ENGINE:所使用的儲存引擎TABLES_ROWS:記錄數DATA_LENGTH:資料大小INDEX_LENGTH:索引大小其他欄位請參考MySQL的手冊,這幾個欄位對我們來說最有用。一個表佔用空間的大小,相當於是 資料大小 + 索引大小,樣本:
Time of Update: 2017-01-19
Innodb資料庫對於已經刪除的資料只是標記為刪除,並不真正釋放所佔用的磁碟空間,這就導致InnoDB資料庫檔案不斷增長。如果在建立資料庫的時候設定innodb_file_per_table=1,這樣InnoDB會對每個表建立一個資料檔案,然後只需要運行OPTIMIZE TABLE 命令就可以釋放所有已經刪除的磁碟空間。運行OPTIMIZE TABLE 表名後,雖然最後會報Table does not support optimize, doing recreate + analyze
Time of Update: 2017-01-19
記錄一下PHP串連MySQL的兩種方式。先mock一下資料,可以執行一下sql。/*建立資料庫*/CREATE DATABASE IF NOT EXISTS `test`;/*選擇資料庫*/USE `test`;/*建立表*/CREATE TABLE IF NOT EXISTS `user` ( name varchar(50), age int);/*插入測試資料*/INSERT INTO `user` (name, age) VALUES('harry', 20), ('tony', 2
Time of Update: 2017-01-19
今天,中國部落格聯盟有博友反饋,zgboke.com無法提交部落格,當時我正好準備去假日廣場聚會,就匆匆忙忙的提交試了下,發現提交部落格的時候確實報如下錯誤:提示web_pic不可為空值。很納悶,之前都可以成功提交的,為什麼突然不行了?看了下網上的案例,說是需要修改MySQL的配置什麼的,但是目前部落格聯盟是掛在京東雲擎的,資料庫不能修改配置,按理說之前可以正常提交,後面應該也可以才對啊!由於聚會時間快到了,就先放在一邊了。回到家之後,對比了下網上的類似案例,原來是web_pic這個索引值設定了
Time of Update: 2017-01-19
MySQL編譯參數多而複雜,讓新手感到很頭大,如果是正式產生環境安裝MySQL,沒有充足的時間去研究每一個參數代表的意義,個人建議使用餘洪春前輩整理的編譯參數,便捷高效!MySQL的線上安裝建議採取編譯安裝的方法,這樣效能上有較大提升,,源碼包的編譯參數會預設以Debgu模式產生二進位代碼,而Debug模式給MySQL帶來的效能損失是比較大的,所以當我們編譯準備安裝的產品代碼時,一定不要忘記使用“—without-debug”參數禁用Debug模式。而如果把—with-mysqld-ldflag
Time of Update: 2017-01-19
MinTTY 是一個小巧但卻很實用的 Cygwin 終端機,但有個嚴重的問題就是無法調用互動性的 Windows 原生程式,比如說 mysql.exe,當你在 MinTTY 中輸入如下的命令:複製代碼 代碼如下:$ mysql -uroot -p本來 mysql.exe 會提示輸入密碼,但在 MinTTY 中程式會直接掛起,不再響應,實際上即使在 -p 參數後面跟上密碼,也是一樣的。某些程式,比如 python,會提供參數
Time of Update: 2017-01-19
原來有一個表中的主鍵是int自增長類型,因為業務變化需要把int改成char類型的主鍵。同時因為原來的表中已經存在了資料,不能刪除表重建,只能修改表結構。首先去掉自增長屬性:alter table table_name change indexid indexid int;然後去掉主鍵:ALTER TABLE table_name DROP primary key;修改表結構為char類型:alter table table_name