整理 MySQL 8.0 文檔時發現一個變更:
海州網站建設公司成都創新互聯,海州網站設計制作,有大型網站制作公司豐富經驗。已為海州成百上千提供企業網站建設服務。企業網站搭建\外貿網站建設要多少錢,請找那個售后服務好的海州做網站的公司定做!
默認字符集由 latin1 變為 utf8mb4。想起以前整理過字符集轉換文檔,升級到 MySQL 8.0 后大概率會有字符集轉換的需求,在此正好分享一下。
當時的需求背景是:
部分系統使用的字符集是 utf8,但 utf8 最多只能存 3 字節長度的字符,不能存放 4 字節的生僻字或者表情符號,因此打算遷移到 utf8mb4。
遷移方案一1. 準備新的數據庫實例,修改以下參數:[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#連接建立時執行設置的語句,對super權限用戶無效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#設置服務端校驗規則,如果字符串需要區分大小寫,設置為utf8mb4_binskip-character-set-client-handshake#忽略應用連接自己設置的字符編碼,保持與全局設置一致## Innodb Settingsinnodb_file_format = Barracudainnodb_file_format_max = Barracudainnodb_file_per_table = 1innodb_large_prefix = ON#允許索引的最大字節數為3072(不開啟則最大為767字節,對于類似varchar(255)字段的索引會有問題,因為255*4大于767)
2. 停止應用,觀察,確認不再有數據寫入
可通過 show master status 觀察 GTID 或者 binlog position,沒有變化則沒有寫入。
3. 導出數據
先導出表結構:mysqldump -u -p --no-data --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --databases testdb /backup/testdb.sql
后導出數據:mysqldump -u -p --no-create-info --master-data=2 --flush-logs --routines --events --triggers --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --database testdb /backup/testdata.sql
4. 修改建表語句
修改導出的表結構文件,將表、列定義中的 utf8 改為 utf8mb4
5. 導入數據
先導入表結構:mysql -u -p testdb /backup/testdb.sql
后導入數據:mysql -u -p testdb /backup/testdata.sql
6. 建用戶
查出舊環境的數據庫用戶,在新數據庫中創建
7. 修改新數據庫端口,啟動應用進行測試
關閉舊數據庫,修改新數據庫端口重啟,啟動應用
打開數據源:開始-設置-控制面板-找到數據源
打開數據源(ODBC),在用戶DSN選項卡中點擊“添加”按鈕,彈出“創建新數據源”窗口。
選中“MYSQL ODBC 5.1 Driver”,點擊“完成”按鈕。
點擊“OK”返回用戶DSN選項卡,增加一條記錄,名為你所配置的數據源名稱
mysql 開啟查詢緩存可以有兩種方法來開啟一種是使用set命令來進行開啟,另一種是直接修改my.ini文件來直接設置都是非常的簡單的哦。
開啟緩存,設置緩存大小,具體實施如下:
windows下是my.ini,linux下是my.cnf;
在配置文件的最后追加上:
需要重啟mysql生效;
b) 開啟緩存,兩種方式:
a)使用mysql命令:
如果報錯:
Query cache is disabled; restart the server with query_cache_type=1 to enable it,還是老老實實的該配置文件,然后重啟吧,原因如下:
查看是否設置成功
show variables like "%query_cache%" 查看是否設置成功:
當然如果你的數據表有更新怎么辦,沒關系mysql默認會和這個表有關系的緩存刪掉,下次查詢的時候會直接讀表然后再緩存
下面是一個簡單的例子:
以上的相關內容就是對mysql緩存查詢和設置的介紹,望你能有所收獲。
一般,我們會把 query_cache_type 設置為 ON,默認情況下應該是ON
query_cache_type有3個值 0代表關閉查詢緩存OFF,1代表開啟ON,2(DEMAND)代表當sql語句中有SQL_CACHE關鍵詞時才緩存,如:
這樣 當我們執行 select id,name from tableName; 這樣就會用到查詢緩存。
①在 query_cache_type 打開的情況下,如果你不想使用緩存,需要指明
select sql_no_cache id,name from tableName;
②當sql中用到mysql函數,也不會緩存
當然也可以禁用查詢緩存: mysql set session query_cache_type=off;
上面的顯示,表示設置查詢緩存是可用的。
表示查詢緩存大小,也就是分配內存大小給查詢緩存,如果你分配大小為0,
那么 第一步 和 第二步 起不到作用,還是沒有任何效果。
上面是 mysql6.0設置默認的,之前的版本好像默認是0的,那么就要自己設置下。
設置
這里是設置1M左右,900多K。
再次查看下:
顯示我們設置新的大小,表示設置成功。
例如: 如果查詢結果很大, 也緩存????這個明顯是不可能的。
MySql 可以設置一個最大的緩存值,當你查詢緩存數結果數據超過這個值就不會
進行緩存。缺省為1M,也就是超過了1M查詢結果就不會緩存。
這個是默認的數值,如果需要修改,就像設置緩存大小一樣設置,使用set
重新指定大小。
好了,通過4個步驟就可以 打開了查詢緩存,具體值的大小和查詢的方式 這個因不同
的情況來指定了。
mysql查詢緩存相關變量
MySQL 提供了一系列的 Global Status 來記錄 Query Cache 的當前狀態,具體如下:
Qcache_free_blocks:目前還處于空閑狀態的 Query Cache 中內存 Block 數目
Qcache_free_memory:目前還處于空閑狀態的 Query Cache 內存總量
Qcache_hits:Query Cache 命中次數
Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次數,也就是沒有命中的次數
Qcache_lowmem_prunes:當 Query Cache 內存容量不夠,需要從中刪除老的 Query Cache 以給新的 Cache 對象使用的次數
Qcache_not_cached:沒有被 Cache 的 SQL 數,包括無法被 Cache 的 SQL 以及由于 query_cache_type 設置的不會被 Cache 的 SQL
Qcache_queries_in_cache:目前在 Query Cache 中的 SQL 數量
Qcache_total_blocks:Query Cache 中總的 Block 數量
檢查是否從查詢緩存中受益的最簡單的辦法就是檢查緩存命中率
當服務器收到SELECT 語句的時候,Qcache_hits 和Com_select 這兩個變量會根據查詢緩存
的情況進行遞增
查詢緩存命中率的計算公式是:Qcache_hits/(Qcache_hits + Com_select)。
query_cache_min_res_unit的配置是一柄”雙刃劍”,默認是4KB,設置值大對大數據查詢有好處,但如果你的查詢都是小數據 查詢,就容易造成內存碎片和浪費。
查詢緩存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
如果查詢緩存碎片率超過20%,可以用FLUSH QUERY CACHE整理緩存碎片,或者試試減小query_cache_min_res_unit,如果你的查詢都是小數據量的話。
查詢緩存利用率 = (query_cache_size - Qcache_free_memory) / query_cache_size * 100%
查詢緩存利用率在25%以下的話說明query_cache_size設置的過大,可適當減小;查詢緩存利用率在80%以上而且 Qcache_lowmem_prunes 50的話說明query_cache_size可能有點小,要不就是碎片太多。
查詢緩存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%
示例服務器 查詢緩存碎片率 = 20.46%,查詢緩存利用率 = 62.26%,查詢緩存命中率 = 1.94%,命中率很差,可能寫操作比較頻繁吧,而且可能有些碎片。
查詢緩存可以看做是SQL文本和查詢結果的映射。如果第二次查詢的SQL和第一次查詢的SQL完全相同(注意必須是完全相同,即使多一個空格或者大小寫不同都認為不同)且開啟了查詢緩存,那么第二次查詢就直接從查詢緩存中取結果,可以通過下面的SQL來查看緩存命中次數(是個累加值):
另外即使完全相同的SQL,如果使用不同的字符集、不同的協議等也會被認為是不同的查詢而分別進行緩存。
在表的結構或數據發生改變時,查詢緩存中的數據不再有效。有這些INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE會導致緩存數據失效。所以查詢緩存適合有大量相同查詢的應用,不適合有大量數據更新的應用。
可以使用下面三個SQL來清理查詢緩存:
1、FLUSH QUERY CACHE; // 清理查詢緩存內存碎片。
2、RESET QUERY CACHE; // 從查詢緩存中移出所有查詢。
3、FLUSH TABLES; //關閉所有打開的表,同時該操作將會清空查詢緩存中的內容。
Query Cache是MySQL Server層的一個非常好的特性,對于小數據集或訪問量非常集中的應用場景,有非常好的性能提升,但是Query Cache引入了一些新的問題,而且大部分場景下比較雞肋,官方打算棄用了
參考:
一般是用命令行,圖像界面要用Navicat
Navicat 軟件介紹
Navicat是一個強大的MySQL數據庫管理和開發工具。Navicat為專業開發者提供了一套強大的足夠尖端的工具,但它對于新用戶仍然是易于學習。Navicat,使用了極好的圖形用戶界面(GUI),可以讓你用一種安全和更為容易的方式快速和容易地創建、組織、存取和共享信息。 用戶可完全控制 MySQL 數據庫和顯示不同的管理資料,包括一個多功能的圖形化管理用戶和訪問權限的管理工具,方便將數據從一個數據庫移轉到另一個數據庫中(Local to Remote、Remote to Remote、Remote to Local),進行檔案備份。 Navicat 支援 Unicode,以及本地或遙距 MySQL 伺服器多連線,用戶可瀏覽數據庫、建立和刪除數據庫、編輯數據、建立或執行 SQL queries、管理用戶權限(安全設定)、將數據庫備份/復原、匯入/匯出數據(支援 CSV, TXT, DBF 和 XML 檔案種類)等。新版與任何 MySQL 5.0.x 伺服器版本兼容,支援 Triggers,以及 BINARY VARBINARY/BIT 數據種類 等的風范。
show databases 查看數據庫中現有的數據庫
show tables 查看表
創建數據庫
create database loli;
創建數據表
create table user(
userid VARCHAR(30) PRIMARY KEY,
name VARCHAR(30) NOT NULL,
password VARCHAR(32) NOT NULL
);
插入測試數據
INSERT INTO user (userid,name,password) VALUES ('admin','adminstrator','admin') ;
解壓MySQL(F:\Program Files\MySQL\)MySQL安裝目錄 二 新建my.ini
在F:\Program Files\MySQL\下建立my.ini文件,內容為 my.ini
[mysqld]
# 設置mysql的安裝目錄
basedir=F:\\Program Files\\MySQL
# 設置mysql數據庫的數據的存放目錄,必須是data,或者是\\xxx-data datadir=F:\\Program Files\\MySQL\\data # 設置mysql服務器的字符集,默認編碼 default-character-set=latin1
[client]
# 設置mysql客戶端的字符集 default-character-set=latin1
[WinMySQLAdmin]
# 指定mysql服務啟動啟動的文件
Server=F:\\Program Files\\MySQL\\bin\\mysqld.exe
三 注冊MySQL服務,使MySQL可以在服務項目中啟動或關閉
1)進入安裝目錄\bin,執行:
F:\Program Files\MySQL\binmysqld -install
顯示:Service successfully installed. 則注冊服務成功。
如果要刪除服務:
F:\Program Files\MySQL\binmysqld -remove 2)修改注冊表:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MySQL\ImagePath 修改為:
"F:\Program Files\MySQL\bin\mysqld" --defaults-file= "F:\Program Files\MySQL\my.ini" MySQL
這樣配置就可以使用net start mysql命令正常啟動MySQL。
四 修改root密碼
MySQL配置好后,啟動成功,默認密碼是空,但是為了安全,設置密碼(一般用戶名為root,密碼為root)。
1)登錄MySQL root用戶:
進入MySQL安裝目錄\bin,執行:
F:\Program Files\MySQL\MySQL-6.0.7\binmysql -u root; 2)修改root密碼:
mysql update mysql.user set password=PASSWORD(''新密碼'') where User=''root'';
mysql flush privileges;
分享標題:mysql6.0怎么用,mysql56怎么用
URL分享:http://www.2m8n56k.cn/article42/dsdjjec.html
成都網站建設公司_創新互聯,為您提供微信小程序、關鍵詞優化、網站收錄、網站建設、網站設計公司、定制開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯