目前分類:MYSQL (286)

瀏覽方式: 標題列表 簡短摘要

wKiom1bMKw3DydV3AACKlJHHU-8835  
  

注意:太低版本的mysql和jdbc不支援,最好用最新版的

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

在大部分场景中我们都是用MySQL主从复制来实现数据库的冗余,这里是用多级复制来处理,多级复制可以快速简单的处理数据库的故障,数据库有A、B、C服务器,正常情况下A为主、B为A的从、C为B的从。

A-->B-->C

当A出现问题时,将B设为主,C为B的从,A正常后就为C的从

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

未命名  

 

SELECT

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

未命名  

SELECT RAND(), RAND();


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

未命名  

SELECT @@VERSION;


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

未命名  

Describe table_name;


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

未命名  

SELECT INET_ATON('203.64.234.1');


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

未命名  

 

SELECT *

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

全域共用記憶體主要是 MySQL Instance(mysqld進程)以及底層儲存引擎用來暫存各種全域運算及可共用的暫存資訊,如存儲查詢緩存的 Query Cache,緩存連接線程的 Thread Cache,緩存表檔案控制代碼資訊的 Table Cache,緩存二進位日誌的 BinLog Buffer, 緩存 MyISAM 儲存引擎索引鍵的 Key Buffer以及存儲 InnoDB 資料和索引的 InnoDB Buffer Pool 等等。下面針對 MySQL 主要的共用記憶體進行一個簡單的分析。




查詢緩存(Query Cache):查詢緩存是 MySQL 比較獨特的一個快取區域,用來緩存特定 Query 的結果集(Result Set)資訊,且共用給所有用戶端。通過對 Query 語句進行特定的 Hash 計算之後與結果集對應存放在 Query Cache 中,以提高完全相同的 Query 語句的相應速度。當我們打開 MySQL 的 Query Cache 之後,MySQL 接收到每一個 SELECT 類型的 Query 之後都會首先通過固定的 Hash 演算法得到該 Query 的 Hash 值,然後到 Query Cache 中查找是否有對應的 Query Cache。如果有,則直接將 Cache 的結果集返回給用戶端。如果沒有,再進行後續操作,得到對應的結果集之後將該結果集緩存到 Query Cache 中,再返回給用戶端。當任何一個表的資料發生任何變化之後,與該表相關的所有 Query Cache 全部會失效,所以 Query Cache對變更比較頻繁的表並不是非常適用,但對那些變更較少的表是非常合適的,可以極大程度的提高查詢效率,如那些靜態資源表,配置表等等。為了盡可能高效的利用 Query Cache,MySQL 針對 Query Cache 設計了多個 query_cache_type 值和兩個 Query Hint:SQL_CACHE 和 SQL_NO_CACHE。當 query_cache_type 設置為0(或者 OFF)的時候不使用 Query Cache,當設置為1(或者 ON)的時候,當且僅當 Query 中使用了SQL_NO_CACHE 的時候 MySQL 會忽略 Query Cache,當 query_cache_type 設置為2(或者DEMAND)的時候,當且僅當Query 中使用了 SQL_CACHE 提示之後,MySQL 才會針對該 Query 使用 Query Cache。可以通過 query_cache_size 來設置可以使用的最大記憶體空間。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

mysql查詢預設是不區分大小寫的 如:
select * from table_name where a like 'a%'
select * from table_name where a like 'A%'

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

[root@IDC-D-2160 ~]# cat mysql.sh
#!/bin/sh
domain=$1
mysql -h61.***.***.115 -uxin****_xjlx -p'M2q6****U2G' -e "select * from f*p.ftp_info where DomainName = '$domain' \G"


shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

我們在寫資料庫程式的時候,經常會需要獲取某個表中的最大序號數,

 

一般情況下獲取剛插入的資料的id,使用select max(id) from table 是可以的。

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

啟動:net start mySql;
進入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
列出資料庫:show databases;

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

步驟:
1. 停止mysqld資料庫服務
shell> service mysql stop

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

在動手操作前最好先安裝好MySQL-Proxy,並配置好MySQL主從伺服器。補充:新版MySQL已經內建支援



延遲問題

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

備份
1.資料庫定時備份工作腳本:(日期時間作為名稱的壓縮檔,解壓開是sql腳本)
/root/backup/script/backup_mysql.sh

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

運行mysql時並不是以管理員的身份運行cmd程式的!所以不能啟動mysql!提示發生系統錯誤 5;拒絕訪問!
在win7下還是可以用net start mysql來啟動mysql服務!
那怎樣用管理員身份來運行cmd程式呢?

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

mysqlimport
示例
mysqlimport -uroot -p123456 test /tmp/mytbl.txt;

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server

 

解決方法:

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()

背景:最近有個生產線的sql比較慢,查詢的次數不是很多,每秒200次左右,但每次sql執行的時間比較慢:

 

截取了10秒鐘的general日誌,分析裡面99%都是一張表的SQL 查詢,總共select 了2343 次:

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()