數據庫進階之MySQL 程序

1.目標

1> 了解mysqlId服務端程序

2> 掌握mysql客戶端程序的使用

3> 了解工具包中的其他程序

2. MySQL程序簡介

本章介紹 MySQL 命令?程序以及在運?這些程序時指定選項的?般語法(如:mysql -uroot -p)。 對常?程序進?詳細的講解(實用工具的使用方法),包括它們的選項。

MySQL安裝完成通常會包含如下程序:

? Linux系統程序(工具類程序)?般在 /usr/bin?錄下,可以通過命令查看:ll /usr/bin/mysql*

?然后還有一個:ll /usr/sbin/mysql* 命令,執行如下

? windows系統?錄:你的安裝路徑\MySQL Server 8.0\bin,可以通過命令查看:dir "D:\mysql\mysql-8.3.0-winx64\bin\*.exe"

每個 MySQL 程序都有許多不同的選項。?多數程序都提供?個 --help 選項,可以使?該選項

來獲取程序不同選項的描述。例如: mysql --help,可以通過在命令?或配置?件中指定選項來覆

蓋 MySQL 程序的默認選項值

后續會詳細學習以下MySQL程序

注意: 除了mysqlIds是服務端程序,后面的都是客戶端工具

程序名作?
mysqld(d表示daemon 表示后臺程序)MySQL的守護進程即 MySQL 服務器,要使?MySQL 服務器 mysqld 必須正在運?狀態
mysqlMySQL客?端程序,?于交互式輸? SQL 語句或以批處理模式從?件執?SQL的命令??具(登錄數據庫服務,輸入sql語句,展示響應結果)
mysqlcheck?于檢查、修復、分析和優化表的表維護客?端
mysqldumpMySQL 數據庫轉儲到 SQL、?本或 XML ?件中的客?端(便于在不同的系統之間來回傳輸)
mysqlimport將?本?件導?到表的客?端?具(備份和恢復再介紹)
mysqladmin執?管理操作的客?端,例如創建或刪除數據庫、重新加載授權表、將表刷新到磁盤以及重新打開?志?件。Mysqladmin還可以?于從服務器檢索版本、進程和狀態信息。
mysqlshow顯?數據庫、表、列和索引信息的客?端(和mysql執行的show語法效果一樣,區別是不需要登錄,直接發送請求即可)
mysqldumpslow?于讀取和匯總慢速查詢?志內容的實?程序(慢查詢: 查詢時間超過閾值,然后記錄下來)
mysqlbinlog?進制?志中讀取SQL語句的實?程序(處理二進制日志)。mysqlbinlog ?件中包含的已執?SQL語句的?志,可?于從崩潰中恢復數據
mysqlslap客?端負載?具,模擬多個客?端同時訪問MySQL服務器,并報告每個階段的使?時間。

其他程序可以去官方網站看:MySQL :: MySQL 8.4 Reference Manual :: 6.5.1 mysql — The MySQL Command-Line Client

3. mysqlId - MySQL 服務器(介紹)

??mysqlId也被稱為MySQL服務器(是一個服務器程序),?是?個多線程程序,對數據目錄(mysql主要的工作目錄)進?訪問管理(包含數據庫和表)。數據?錄也是其他信息(如?志?件和狀態?件)的默認存儲位置。

? 當 MySQL 服務器啟動時,會偵聽指定的端?、處理來?客?端程序的?絡連接,并管理不同客戶

端對數據庫的訪問

? mysqlId 程序又很多選項可以在啟動的時候指定, 可以運行下面命令進行查看

mysqld --verbose --help?注意這里不需要連接mysql服務器的

4. mysql-MySQL 命令行客戶端

mysql 客戶端簡介

mysql 是一個簡單的sql shell, 可以輸入命令和執行sql語句, 當執行sql語句的時候, 查詢結果以ASCII表格式顯示

mysql的基本使用命令,比如連接

短選項格式

mysql -uroot?-p [db_name] 最后這個參數是指定連接的是哪個數據庫

我們不加mysql參數顯示的結果


當我輸入 mysql -uroot -p mysql? 加了參數, 輸入密碼. 然后查看選擇的數據庫, 發現就是mysql數據庫

相當于不加參數后, 再執行 use mysql 這個命令

另一種連接方式

長選項格式:

mysql --user=root --password [db_name]

?mysql 客戶端選項

指定選項的方式

? 在mysql后面的命令行列出路徑 剛剛上面的長選項短選項格式就是這個

? 在mysql后面指定配置文件的路徑, 以便在程序啟動的時候讀取配置文件中的選項, 并解析對應程序選項的值, 并應用在啟動參數中?

我們打開我們的MySQL客戶端的路徑, 然后去看它的屬性

具體是這個樣子

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" "--defaults-file=C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" "-uroot" "-p" "--default-character-set=utf8mb4"

下面是解析

? 使用環境變量種的選項(不介紹)

mysql 客戶端命令常用選項

選項--長格式短格式說明
--host-h

--host = host_name,-hhost_name

連接到指定主機上的 MySQL 服務(默認的地址127.0.0.1 localhost)

--port-P(大寫p)

--port=port_num, -pport_num

TCP/IP 連接使用的端口號(默認是3306)

user-u--user=user_name , -uuser_name ?于連接到MySQL 服務器的??名
--password-p(小寫p)--password[=password] , -p[password] ?于連接到MySQL 服務器的密碼。可選,如果沒有給出, 會提???輸?
--defaults-file--defaults-file=file_name使?指定的選項?件。如果該?件不存在,則會發?錯誤。
--default-characterset--default-character-set=charset_namecharset_name 將作為客戶端和當前連接的默認字符集,例: utf8mb4
--database-D--database=db_name , -Ddb_name 指定要使?的數據庫
--compress-C--compress , -C 如果可能,壓縮客戶端和服務器之間傳輸的所有信息
--reconnect--reconnect? 如果客戶端與服務器的連接丟失,?動嘗試重新連接(丟失重連)
--quick-q--quick , -q 不緩存查詢結果,收到??打印??,如果輸出被掛起,可能會降低服務器速度(謹慎使用)
--protocol--protocol={TCP|SOCKET|PIPE|MEMORY}?于連接到服務器的傳輸協議, 默認為TCP
--delimiter--delimiter=str?設置SQL語句分隔符(標記sql語句結束的字符)。默認值為分號 ( ; )
--execute-e

--execute=statement , -estatement 執?指定的SQL語句并退出

直接在mysql客戶端直接執行sql語句,并且直接退出, 連接成功之后, 讀取execute后的sql語句,直接就會把結果返回, 不用先登錄,然后寫sql,然后等待結果,最后退出,直接可以通過這個參數一步搞定

--version-V--version , -V?顯示版本信息并退出。
--help-?--help , -? 顯示幫助信息并退出。

注意: 如果選項的值中包含空格,那么值需要包含在雙引號中

在命令行中使用選項

規則:

1> -- 表示長格式, -表示短格式.?例如:-?和 --help 都表示MySQL 程序顯示他的幫助消息

2> 選項名稱區分大小寫. -v 和 -V 都是合法的,但是含義不同, 他們分別是 --verbose(盡可能詳細顯示結果) 和 --version(顯示mysql版本號)?選項的相應縮寫格式

3> 在某些選項后面需要指定一個值, 比如: 長格式:mysql -h 127.0.0.1 或mysql --host=127.0.0.1 表示向客戶端程序指定MySQL 服務器主機

4> 對于帶值的長格式選項,使用 = 分割選項名和值, 對于短格式, 選項值就直接跟在選項之后, 也可以用空格分開. 如: 長格式: --host=127.0.0.1, 段格式: -h127.0.0.1 和-h 127.0.0.1; 但是指定密碼選項的短格式,選項和值不能有空格:?

mysql -ptest test是表示密碼,但是沒有指定要訪問的數據庫

mysql -p test test 表示的是指定訪問的數據庫, 但是沒有指定密碼

注意: 在命令?中,第?個不帶破折號 - 的值被解析為要訪問的數據庫名, 選項+值是一組

5> 在選項名稱中, - 和 _ 大多情況下可以互換, 但是前導破折號不能轉為下劃線

如: --skip-grant-tables 和 --skin_grant_tables 是等價的 但是不能寫成?__skin_grant_tables

6> 對于采用數值的選項, 值的后綴可以帶有K,M,G表示乘數 1024、1024^2或 1024^3(指定緩沖區大小)如:?mysqladmin --count=1K --sleep=3 ping -uroot -p?告訴 mysqladmin對服務器執? 1024 次 ping,每次 ping 之間休眠 3 秒

7> 在命令行中包含空格的選項值, 必須用"" 引起來, 比如我們使用 --execute/-e選項和mysql一起使用的時候, 表示把一個或多個sql語句發送給服務器執行并顯示結果

沒使用execute之前

使用execute后:?mysql -u root -p -e "select version();select now();"

直接就返回結果

選項(配置)文件?

大多數MySQL程序都可以從選項文件(配置文件)中讀取啟動選項. 可以在選項文件中指定常用選項, 這樣就不用再每次創建程序的時候, 在命令行里面輸入它們. 大部分的選項文件都是純文本格式, 可以用文本編輯器進行創建(vscode)

使用方法

選項 --defaults-file 可以指定要使用的選項文件, 客戶端程序會讀取并應用選項文件中的配置

Linux

mysql --defaults-file=/etc/mysql/my.cnf -uroot -p

conf.d

mysql.conf.d/ mysql服務端

雖然把客戶端和服務器的配置文件做了區分, 但是一般不會分別在對應的配置文件中配置, 而是把所有的配置都寫在默認的配置文件中, 便于維護和管理

windows

mysql "--defaults-file=C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" -uroot -p 這一段是windows下默認的配置文件路徑

注意, 每次修改配置之前,必須要先進行備份

如果在使用mysql程序的時候(客戶端/服務端), 沒有指定配置文件的路徑, 那么就會自動讀取默認路徑下的配置文件. 下面介紹默認配置文件地址和加載順序

選項文件位置以及加載順序

在 Windows 系統讀取選項?件

mysql 按照下面順序查找并讀取選項/配置 文件. 如果文件不存在則需要手動創建. 讀取的順序從上到下, 后讀取的文件中配置的選項優先級越高.

?件名說明
%WINDIR%\my.ini , %WINDIR%\my.cnf全局
C:\my.ini , C:\my.cnf全局
BASEDIR\my.ini , BASEDIR\my.cnf全局
defaults-extra-file如果存在其他選項?件可以通過 --defaults-extra-file選項指定
%APPDATA%\MySQL\.mylogin.cnf登錄路徑選項(僅限客?端)針對客戶端的配置文件
DATADIR\mysqld-auto.cnf系統變量 (僅限服務器) 這個是放我們的數據庫表的目錄,實現持久化存儲

優先級和讀取順序(注意一下)

對每個配置文件進行逐一的解釋

%WINDIR%\my.ini , %WINDIR%\my.cnf

先去c盤下的windows去查看有沒有my.ini, 如果有就加載并讀取相應的選項值, 如果沒有就繼續往下找

BASEDIR\my.ini , BASEDIR\my.cnf? ? BASEDIR這個是代表安裝路徑

defaults-extra-file 后面講linux會說區別

%APPDATA%\MySQL\.mylogin.cnf 針對客戶端的配置文件

DATADIR\mysqld-auto.cnf? ? DATADIR 這個是放我們的數據庫表的目錄,實現持久化存儲(僅用于服務器)

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini? ? 這個默認配置文件是在上面幾個執行的中間位置, 不固定. 這個路徑是我們常用的操作配置文件的路徑

在 Unix 和 Linux 系統上讀取的選項?件

?件名說明
/etc/my.cnf全局
/etc/mysql/my.cnf全局
$MYSQL_HOME/my.cnf服務器特定選項(僅限服務器)
defaults-extra-file如果存在其他選項?件可以通過 --defaults-extra-file 選項指定
~/.my.cnf??特定選項
~/.mylogin.cnf??特定的登錄路徑選項(僅限客?端)
DATADIR/mysqld-auto.cnf系統變量 (僅限服務器)

讀取順序和優先級

后讀取的會把前讀取的覆蓋掉(相同的選項值, 后面的覆蓋前面的選項值). 對于倆個配置文件中配置 了相同的選項, 那么優先級高的文件就會覆蓋掉優先級低的文件中的選項

對每個配置文件進行逐一的解釋
?/etc/my.cnf 默認是沒有的

defaults-extra-file

我們去官方文檔進行查看:?MySQL :: MySQL 8.0 Reference Manual :: 6.5.1.1 mysql Client Options

總結: 在widows 系統中配置文件的后綴名為 .ini 或 .conf. 在Linux 系統中配置文件的后綴名為.cnf

選項文件語法

1> 任何長選項都可以在選項文件中指定. 獲取選項列表可以使用下面指令

mysql --help

2> 選項文件中指定選項時, 省略倆個前導破折號, 并且每一行表示一個選項

例子:?--quick 和 --host=127.0.0.1 在選項?件中應表?成 quick 和 host=127.0.0.1 (并且需要換行)

quick

host=127.0.0.1

3> 注釋: 通常時以 # ; 開頭

4> [group] 結點, 名稱不區分大小寫. 也就是當選項名稱和程序名稱相同, 則需要使用[]來區分時客戶端還是服務器的

[mysqlId]和[mysql] 組就分別適用于mysqlId服務程序和mysql客戶端程序(分開對每一個程序進行配置, 而不會影響到其他組)

5> opt_name = value (選項名和值)如: host=127.0.0.1?

選項名對應的值,可以使?轉義序列 \b , \t , \n , \r , \\ 和 \s 來表?退格符、制表符、換?符、回?符、反斜杠和空格字符

例子:

basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0"

basedir="C:/Program Files/MySQL/MySQL Server 8.0"

6> [client] MySQL發?版中所有客?端程序(mysql,mysqkcheck,mysqkdump....)都會讀取并應?這個組下的選項(除了mysqld)配置的公共信息,在這個組下可以指定適?于所有客?端程序的通?選項,例如配置??名和密碼(但要確保只有??才可以訪問這個?件以防?密碼泄漏)也就是所有客戶端程序都會讀取client這個結點下配置的公共信息(客戶端的公共信息都可以寫到[client]里面

例子:?

# 在當前??的home?錄下創建.my.cnf,并在[client]寫?公共配置

# 這?主要設置?了主機、端?、??名、密碼

輸入 vim mysql.cnf

然后我們打開編輯模式按i,然后把下面的內容粘貼進去,編輯完成按Esc 退出編輯模式, 然后輸入:wq退出并保存

[client]

host=127.0.0.1

port=3306

user=root

password=12345

然后我們就可以不輸入密碼就進入mysql了

7>可以通過 [客?端程序名] 的形式為不同的客?端程序指定選項(自定義化的配置),例如 [mysql] ,當運?mysql程序時會讀取并應?該組下的配置,如果選項名與 [client] 重復, [client] 中的

選項將會被覆蓋([客?端程序名]結點的優先級高于[client]

?# 設置為必須輸?密碼

[mysql]

password

輸入mysql之后就需要輸入密碼了

8>?為特定 MySQL 版本設置選項可以使? [mysqld-5.7] 、 [mysqld-8.0] 的組名(使用不同版本的mysqlId)

9>?在選項?件中使? !include 指令來包含其他選項?件,例如: !include/home/mydir/myopt.cnf

這里面的cnf是具體的配置文件

10>?在選項?件中使? !includedir 指令來搜索指定?錄中的其他選項?件,例如: !include /home/mydir (這里面的mydir是一個指定的目錄)?但不保證?錄中選項?件的讀取順序(先掃描到誰, 加載誰)

注意:

1. !includedir 在 Unix和Linux 操作系統中會搜索指定?錄下任何以 .cnf 為后綴的?件.在 Windows 中,會搜索指定?錄下任何以 .ini 或 .cnf 為后綴的?件

2. 只會讀取包含?件中當前客?端的組配置,例如當前運?的是mysql程序,那么只會讀取[mysql]組中的選項配置

11>?在 Windows中請確保在配置?件的最后??加?個換?符,否則該?將被忽略

例子: 設置客戶端全局編碼格式

?輸入命令:?vim /etc/mysql/my.cnf

設置編碼集

[client] # 所有客?端程序者會讀取這個節點下的配置信息

default-character-set=utf8mb4 # 指定編碼格式為utf8mb4

?注意每次對配置文件進行修改, 我們都需要備份

cp mysql.cnf mysql.cnf.bak

mysql 客戶端命令

mysql客戶端命令的作用:

1> 執行sql語句

2> 執行指令

使?mysql客?端程序連接到數據庫服務器之后,可以發送SQL語句到服務器執?,并以 ";"(分

號)、\g 或 \G結束(結束標識符)

1. ; 與 \g 結束表?以表格形式展?結果

2. \G 結束表?以?形式展?結果

3. 如果當前已經輸?了?部分SQL 語句想重新輸?可以輸?Control+C中斷當前輸?

在當前模式下,mysql還有?組??的命令,可以輸? help or \h 查看命令列表

help/ \? 查看命令列表

clear/ \c 清除當前語句(寫錯了,想取消命令可以用這個)

connect/ \r 重新連接服務器

status/ \s 查看服務器狀態(里面包含線程情況, 服務器版本, 字符集...)

?delimiter/? \d? (英文: delimiter 是定界符的意思) 可以設置mysql語句的結束標識符

?

?exit \q? | quit \q 這倆個指令都是退出mysql

tee/ \T 把執行的結果保存在一個指定的目錄文件中(相當于日志)

創建文件/root/rs.txt

使用tee指令把指定txt文件作為mysql指令結果記錄目錄

?

執行mysql 語句 結果會保存在剛剛指定的路徑

查看指定的 rs.txt文件 發現都是我們執行的mysql語句結果集

notee/ -t 執行結果不再寫入文件

prompt/ \R?修改提示符

這個就是提示符?

source/ \. ?加載并執行指定的.sql腳本(把我們本機的sql語句搞到一個文件里面,然后在服務器通過這個命令把文件進行引用,然后進行執行即可)(后續會演示)

system/ \!?在mysql上執行系統命令, 非常危險

?甚至可以查看密碼, 十分的危險

?use/ \u 使用數據庫

warnings/ \W 顯示警告信息

nowarning/ \w 不顯示警告信息

help contents 獲取服務端的幫助(集成了官方文檔)

?我們查看 Data Types 里面 BIT 類型的詳細解釋信息

從sql文件執行SQL語句

使用場景: 開發環境-->測試環境-->生產環境

使用 source命令進行導入?

有時候我們需要從.sql 文件執行?些SQL語句,比如要把?個數據庫從?臺服務器A復制到另?臺服務器B上,那么可以先從服務器A導出數據到.sql?件,然后在服務器B執行這個.sql?件,在剛剛我們學習了,用help命令查看命令列表,可以看到有?個source 命令如下所示:

\. sql文件的絕對路徑

我們進行演示

?1. 準備要執行的.sql?件,名為test_db.sql,內容如下:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP DATABASE IF EXISTS `test_db`;
CREATE DATABASE `test_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;USE `test_db`;-- ----------------------------
-- Table structure for classes
-- ----------------------------
DROP TABLE IF EXISTS `classes`;
CREATE TABLE `classes`  (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of classes
-- ----------------------------
INSERT INTO `classes` VALUES (1, '計算機系2019級1班', '學習了計算機原理、C和Java語言、數據結構和算法');
INSERT INTO `classes` VALUES (2, '中文系2019級3班', '學習了中國傳統文學');
INSERT INTO `classes` VALUES (3, '自動化2019級5班', '學習了機械自動化');-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course`  (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, 'Java');
INSERT INTO `course` VALUES (2, '中國傳統文化');
INSERT INTO `course` VALUES (3, '計算機原理');
INSERT INTO `course` VALUES (4, '語文');
INSERT INTO `course` VALUES (5, '高階數學');
INSERT INTO `course` VALUES (6, '英文');-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score`  (`score` decimal(3, 1) NULL DEFAULT NULL,`student_id` int(11) NULL DEFAULT NULL,`course_id` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (70.5, 1, 1);
INSERT INTO `score` VALUES (98.5, 1, 3);
INSERT INTO `score` VALUES (33.0, 1, 5);
INSERT INTO `score` VALUES (98.0, 1, 6);
INSERT INTO `score` VALUES (60.0, 2, 1);
INSERT INTO `score` VALUES (59.5, 2, 5);
INSERT INTO `score` VALUES (33.0, 3, 1);
INSERT INTO `score` VALUES (68.0, 3, 3);
INSERT INTO `score` VALUES (99.0, 3, 5);
INSERT INTO `score` VALUES (67.0, 4, 1);
INSERT INTO `score` VALUES (23.0, 4, 3);
INSERT INTO `score` VALUES (56.0, 4, 5);
INSERT INTO `score` VALUES (72.0, 4, 6);
INSERT INTO `score` VALUES (81.0, 5, 1);
INSERT INTO `score` VALUES (37.0, 5, 5);-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (`id` int(11) PRIMARY KEY AUTO_INCREMENT,`sn` int(11) NOT NULL COMMENT '學號',`name` varchar(20) NOT NULL COMMENT '姓名',`mail` varchar(20) COMMENT 'QQ郵箱'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, 50001, '張三', 'zs@bit.com');
INSERT INTO `student` VALUES (2, 50002, '李四', 'ls@bit.com');
INSERT INTO `student` VALUES (3, 50003, '王五', 'ww@bit.com');
INSERT INTO `student` VALUES (4, 50004, '趙六', 'zl@bit.com');
INSERT INTO `student` VALUES (5, 50005, '錢七', 'qq@bit.com');SET FOREIGN_KEY_CHECKS = 1;

把上面的sql語句保存在test_db.sql文件里面,然后傳到你的服務器里面

?刪除 .txt文件后綴

?查看當前有沒有這個數據庫

執行外部sql文件

查看數據庫: 發現確實創建了這個數據庫

注意, 執行的時候可能沒有權限, 我們要切換成root用戶

?使?mysql客戶端導入

不需要登錄mysql而是直接在我們linux終端來執行

mysql < test_db.sql -u root -p

執行結果, 發現確實是有數據庫和表

注意:

mysql db_name < text_file # 在指定的數據庫下執?SQL,前提是數據庫必須提前建?好

mysql < text_file # 不指定數據庫.sql中必須有USE [database_name],來指定要操作的數據庫
?

5. 工具包中其他程序的使用?

程序名作?
mysqld(d表示daemon 表示后臺程序)MySQL的守護進程即 MySQL 服務器,要使?MySQL 服務器 mysqld 必須正在運?狀態
mysqlMySQL客?端程序,?于交互式輸? SQL 語句或以批處理模式從?件執?SQL的命令??具(登錄數據庫服務,輸入sql語句,展示響應結果)
mysqlcheck?于檢查、修復、分析和優化表的表維護客?端
mysqldumpMySQL 數據庫轉儲到 SQL、?本或 XML ?件中的客?端(便于在不同的系統之間來回傳輸)
mysqlimport將?本?件導?到表的客?端?具(備份和恢復再介紹)
mysqladmin執?管理操作的客?端,例如創建或刪除數據庫、重新加載授權表、將表刷新到磁盤以及重新打開?志?件。Mysqladmin還可以?于從服務器檢索版本、進程和狀態信息。
mysqlshow顯?數據庫、表、列和索引信息的客?端(和mysql執行的show語法效果一樣,區別是不需要登錄,直接發送請求即可)
mysqldumpslow?于讀取和匯總慢速查詢?志內容的實?程序(慢查詢: 查詢時間超過閾值,然后記錄下來)
mysqlbinlog?進制?志中讀取SQL語句的實?程序(處理二進制日志)。mysqlbinlog ?件中包含的已執?SQL語句的?志,可?于從崩潰中恢復數據
mysqlslap客?端負載?具,模擬多個客?端同時訪問MySQL服務器,并報告每個階段的使?時間。

在命令?中使?MySQL發?版中的其他?具時,?些選項是公共的,?如??名和密碼,使??法和mysql相同,在這?統?列出,后?我們在介紹不同的?具時,只討論個性的選項及作?,公共選項如下所?:

選項--?格式短格式說明
--host-h--host=host_name , -h host_name 連接到指定主機上的 MySQL 服務
--port-P--port=port_num , -P port_num TCP/IP 連接使?的端?號
--user-u--user=user_name , -u user_name ?于連接到MySQL 服務器的??名
--password-p--password[=password] , -p[password] ?于連接到MySQL 服務器的密碼。可選,如果沒有給出, 會提???輸?
--defaults-file

--defaults-file=dile_name

使用指定的選項文件, 如果該文件不存在, 則會發生錯誤

--compress-C

--compress,-C

如果可能, 壓縮客戶端和服務器之間傳輸的所有信息

--protocol--protocol={TCP|SOCKET|PIPE|MEMORY}
--version-V

--version, -V

顯示版本信息并退出

--help-?

--help,-?

顯示幫助信息并退出

mysqlcheck? - 表維護程序

作用

mysql客戶端主要執行表維護, 可以對表進行: 分析, 檢查, 優化或回復操作

? 分析的作?是查看表的關鍵字分布(定義了哪些二級索引,通過哪些where條件可以查詢到),能夠讓 sql ?成正確的執?計劃(?持 InnoDB,MyISAM,NDB)

? 檢查的作?是檢查表的完整性以及數據庫表和索引是否損壞(當意外斷電的時候,寫數據有沒有寫完,返回錯誤..)(?持 InnoDB,MyISAM,ARCHIVE,CSV)

? 優化的作?是回收空間、減少碎?(整理磁盤碎片)、提?I/O(?持 InnoDB,MyISAM,ARCHIVE)

? 修復的作?是修復可能已經損壞的表(?持 MyISAM,ARCHIVE,CSV)

?注意事項:

1. 當使?mysqlcheck?具時,MySQL服務器必須在運?狀態

2. 執?過程中相應的表將會被鎖定,所以其他的操作將會被掛起

3. 并不是所有的存儲引擎都?持以上四種操作,如果遇到不?持的引擎會報出相應的錯誤

4. 執?表修復操作之前對表進?備份(修改數據庫的時候覺得備份),在某些情況下可能會導致數據丟失。

使用方法:

使用三種方式來使用mysqlcheck

mysqlcheck [options] db_name [tbl_name ...]? 指定數據庫名,表名
mysqlcheck [options] --databases db_name ... 多個數據庫

mysqlcheck [options] --all-databases 2 所有的數據庫

常用選項

mysqlcheck有如下常?選項,可以在命令?中指定,也可以在選項?件中通過 [mysqlcheck] 和 [client] 組進?指定

選項說明
--analyze,-a分析表
--auto-repair如果檢查的表有損壞,則?動修復它。所有表都檢查過之后才進?必要的修復(自動修復)
--check,-c檢查表中的錯誤。mysqlcheck的默認操作
--check-only-changed,- C僅檢查?上次檢查以來更改過的表, 沒有修改的表會被忽略
--databases,-B多個數據庫名?空格隔開 處理指定數據庫中的所有表
--force, -f即使發?SQL錯誤也要繼續
--optimize,-o優化表
--repair,-r執?可能進?的任務修復操作,除了唯?鍵
--skip-database--skip-database=db_name不需要執?檢查的數據庫名(區分??寫)(跳過哪些數據庫)
--tables--tables=table_name 多個表名?空格隔開 在選項之后的所有名稱參數都被視為表名。
--use-frm對于MyISAM表的修復操作

分析表: mysqlcheck -a 數據庫名稱 -u root -p??

?檢查表: mysqlcheck --check 數據庫名稱 -uroot -p

?修復表: mysqlcheck --repair 數據庫名稱 -uroot -p

注意: 修復不支持InnoDB存儲引擎, 如果要修復InnoB存儲引擎的數據, 要把InnoDB存儲引擎的表轉化成Mylsam存儲引擎

優化表: mysqlcheck --optimize 數據庫名 -uroot -p

注意:

1> InnoDB在優化過程中執行的是一個重建的操作

2> 官網建議不要經常取執行優化操作(一天,一小時算經常, 大表一個月優化一次, 小表可以不優化)

mysqlcheck的特殊使用

mysqlcheck程序的默認功能是對數據表進? 檢查 操作(相當于指定選項 --check ),如果想要對表進?修復操作,可以通過復制原來的mysqlcheck程序,并重命名為mysqlrepair,并運?mysqlrepair即可,還可以創建mysqlcheck的快捷?式,并把快捷?式命名為mysqlrepair然后
直接運?,這時就執?的是修復操作,通過下表所?的命名?式可以改變mysqlcheck的默認?為

好處: 不需要指定對應的操作選項, 只要指定數據庫/表

程序名說明
mysqlrepair默認?為是修復,相當于選項 --repair
mysqlanalyze默認?為是修復,相當于分析 --analyze
mysqloptimize默認?為是修復,相當于優化 --optimize

Mysqldump - 數據庫備份程序

作用: mysqldump客戶端程序可以執行邏輯備份并且生成一組SQL語句, 其中包含原始數據庫和表的定義以及表中的數據, 以便實現對數據庫的簡單備份或復制, mysqldump可以生成,.sql,csv或xml格式文件

注意事項:

1. 轉儲表時必須要有 SELECT 權限(查詢)

2. 轉儲視圖時必須要有 SHOW VIEW 權限

3. 轉儲觸發器時必須要有 TRIGGER 權限

4. 如果沒有使? --single-transaction 選項時必須要有 LOCK TABLES 權限

5. 如果沒有使? --no-tablespaces 選項時必須要有 PROCESS 權限

6. 重新導?轉儲?件時,也需要有相應的權限(delete,update...

7. 由于mysqldump是逐?轉儲數據,所以不適?于?數據量的轉儲與導?

使用方法:

mysqldump的?法通常有以下使?,可以轉儲?個或多個表或數據庫,如下所?:

mysqldump [options] db_name [tbl_name ...] 指定一個數據庫(表名)

mysqldump [options] --databases db_name ... 指定多個數據庫

mysqldump [options] --all-databases 所有的數據庫

常用選項:

mysqldump有如下常?選項,可以在命令?中指定,也可以在選項?件中通過 [mysqldump] 和[client] 組進?指定

選項說明
--add-drop-database在每個 CREATE DATABASE 語句之前添加 DROP DATABASE 語句? ( 相當于 每次創建數據庫?前面?drop database if exists 數據庫名字)?
--add-drop-table在每個 CREATE TABLE 語句之前添加 DROP TABLE 語句(相當于 每次創建表 前面drop table if exists 數據表名)
--add-drop-trigger在每個 CREATE TRIGGER 語句之前添加 DROP TRIGGER 語句(創建觸發器同上)
--add-locks? LOCK TABLES 和 UNLOCK TABLES 語句包裹每個表轉儲(鎖起來, 讓別的操作不要影響當下執行的操作)
--all-databases,-A轉儲所有數據庫中的所有表
--databases,-B--databases=db_name 多個數據庫名?空格隔開 將參數解釋為數據庫名稱并轉儲所有的表
--comments,-i添加注釋到轉儲?件 添加注釋
--compact緊湊格式輸出 給表添加值的時候, 一口氣添加一組, 而不是一個一個添加
--compatible=ansi?成與其他數據庫或舊MySQL服務器更兼容的輸出
--complete-insert,-c使?包含列名的完整INSERT語句
--events,-E從轉儲數據庫中轉儲事件
--extended-insert,-e使?多?INSERT語法
--flush-logs,-F在開始轉儲前刷新?志
--flush-privileges在轉儲后刷新權限
--force,-f轉儲期間發?了SQL錯誤,也要繼續
--hex-blob使??六進制表?法轉儲?進制列
--ignore-table--ignore-table=db_name,table_name 多個表?空格隔開 不轉儲給定的表 哪些表是不需要導入的
--lock-all-tables,-x鎖定所有數據庫中的所有表
--lock-tables,-l在轉儲之前鎖定指定要轉儲的表
--no-autocommot--databases=db_name --ignore-table=db_name.table_name
--no-create-db,-n不要?成 CREATE DATABASE 語句 不會出現drop database if exists 數據庫名字 語句, 和上面相反
--no-create-info,-t不要為每個轉儲的表?成 CREATE TABLE 語句
--no-data,-d不轉儲表內容(不會生成 insert 語句) 默認是生成的
--skip-add-drop-table在每個 CREATE TABLE 語句之前不添加 DROP TABLE 語句
--skip-add-locks不要添加鎖
--skip-comments轉儲?件中不添加注釋
--skip-compact不使?緊湊格式
--skip-triggers不轉儲觸發器
--tables

--tables=table_name 多個表名?空格隔開

在選項之后的所有名稱參數都被視為表名。 需要轉儲哪些表

--triggers轉儲每個表中的觸發器
--xml,-X以XML格式輸出 指定輸出格式

導出mysql語句:??mysqldump 數據庫名 > 指定的目錄.sql -uroot -p? 把我們的數據庫以文字的形式存在文件里面(具體的數據庫和表->sql語句)

?

查看我們轉儲的文件

導出單個數據庫

導出所有數據庫, 添加drop if exsist語句, 刪除insert語句

mysqldump -A --add-drop-database --no-data > /root/dumpAll.sql -uroot -p

mysqladmin -MySQL 服務器管理程序

作用:? 是一個執行管理操作的客戶端. 可以用來檢查服務器的配置和當前狀態, 以及創建和刪除數據庫等(配合使用mysqladmin的用戶必須具備管理員權限)

使用方法:

mysqladmin可以使用下面的語法

mysqladmin [options] command [command-arg] [command [command-arg]] ...

?常用選項:

可以使用[mysqladmin]和[client]進行指定

支持的命令:

語法中的command 表?命令,有些命令后?需要跟上?個參數,如下列出了mysqladmin 的常?命令
1. version

顯示服務器的版本信息: mysqladmin version -uroot -p (當前mysql的版本是多少, 協議版本,..)

2. status?

查看服務器狀態: mysqladmin status -uroot -p (線程數...)

參數含義

Uptime MySQL 服務器已運?的秒數。

Threads 活動線程(客?端)的數量。

Questions ?服務器啟動以來客?端的問題(查詢)數。

Slow queries 慢SQL的查詢數。

Opens 服務器已打開的表數。

Flush tables 服務器已執?flush-*、refresh和reload命令的數量。

Open tables 當前打開的表數。

3. create db_name?

創建一個數據庫名為 db_name 的數據庫: mysqladmin create 數據庫名 -uroot -p

注意: 創建數據庫使用的編碼集是選項文件中配置的編碼集, 如果沒有指定那么就使用當前MySQL版本默認的編碼集

4. drop db_name

刪除數據庫名為 db_name 的數據庫: mysqladmin drop 數據庫名 -uroot -p

5. extended-status

顯示服務器狀態變量的值 描述系統的工作狀態

6. flush-hosts

刷新主機緩存中的所有信息

7. flus-logs[log_type...]

刷新所有日志, log_type 中可以提供下一種或多種日志類型binary,engine,error,general,relay,slow,多個類型之間用空格分割

8. flush-privilages

重新加載授權表

9. flush-tables

刷新所有表

10. flush-threads

刷新線程緩存

11. password new_password

設置新密碼

? 如果密碼中有空格必須?雙引號把密碼包裹起來

? password 后可以省略新密碼,mysqladmin會在之后提?輸?新密碼

? password 做為最后?個command 時才可以省略密碼值,否則下?個參數將作為密碼被設置

12. ping

檢查服務器是否可用(不斷的發送請求)

13. processlist

顯示活動服務器線程的列表: mysqladmin processlist -u root -p

為什么要查進程列表, 當我們服務器的可用連接占滿了之后,我們需要讓他自動去釋放, Mysql默認可用維護150個活動連接, 如果連接被使用完, 那么就可以通過kill指令手動釋放那些睡眠時間很長的連接(很多情況是死鎖了不釋放)

14. kill id, id,...

終止服務器線程, 如果給出了多個線程ID值, 則列表中不能有空格

此時殺死后,我們再執行殺死的那個連接, 發現進行了重新連接

?15. reload

重新加載授權表

16. refresh?

刷新所有表

17. shutdown

停止服務器

18. start-replica

在副本服務器上開始復制. Mysql 8.0.26后的版本開始使用

19. start-slave?

在副本服務器上開始復制. 同18

20. stop-replica

停止副本服務器上的復制.?MySQL 8.0.26及以后的版本使?此命令。

21. stop-slave?

停止副本服務器上的服務.MySQL 8.0.26 之前使?此命令

22. variables

顯示服務器系統變量及其值: mysqladmin variables -uroot -p123456

?mysqlshow - 顯示數據庫, 表和列信息

?作用:

客戶端可用于快速查看哪些數據庫, 數據庫中的表和表中的列或索引(和show databases;返回結果一樣)

注意事項:

具體可用看看官方文檔:?https://dev.mysql.com/doc/refman/8.0/en/show.html

使用方法:

mysqlshow [options] [db_name [tbl_name [col_name]]]

? db_name tbl_name col_name 可以使?通配符 * 、 ? 、 % 或 _

? 如果沒有指定數據庫,則顯?所有數據庫名稱列表。

? 如果沒有指定表,則顯?數據庫中所有匹配的表。

? 如果沒有指定列,則顯?表中所有匹配的列和列類型。

? 輸出僅顯?當前權限可以訪問的數據庫、表或列的名稱。

常用選項:

顯示指定數據庫中的表: mysqlshow 數據庫名 -uroot -p123456

顯示表中所有的列: mysqlshow 數據庫 數據表 -uroot -p123456

顯示某個表中的某一列: mysqlshow 數據庫 數據表 表里面的字段 -uroot -p123456

mysqldumpslow - 總結慢查詢日志文件

作用:

在使用MySOL數據庫的時候, 經常進行查詢操作, 當某些查詢語句執行的時間非常長, 超過了設定的閾值, 則稱之為慢查詢, 慢查詢的相關信息被記錄成一個日志叫做慢查詢日志, mysqldumpslow 可用解析慢查詢日志文件并匯總其內容, 有關慢查詢日志的內容在服務器配置進行詳細解析

進行慢查詢對應的SQL優化的依據

我們先使用 mysqladmin status -u root -p123456 查看是否有慢查詢語句

再通過 show variables like '%query%' 可用查看系統變量, 其中 long_query_time 是設置的慢查詢的指定閾值,此時為10s, 默認的慢查詢日志文件是 slow_query_log_file, 此時還涉及一個開關, slow_query_log (默認是off 不記錄日志)

注意事項:

通常情況下,mysqldumpslow 會將相似的查詢分組并顯?摘要輸出?般會把數字和字符串? N和 "S" 代替,要想顯?真實的值可以使? -a 和 -n 選項

使用方法:

語法:?mysqldumpslow [options] [log_file ...] log_file是具體的慢日志保存路徑

參數解釋

count: 執行的次數

Time: 單次的耗時

Lock: 申請與釋放鎖使用的時間

Rows 獲取數據所用的時間

mysqldumpslow常用選項

選項說明
-a不? N 和 'S' 代替numbers和String
-n N在名稱中包含N個以上的數字? N 代替
-g pattern僅考慮與指定模式匹配(字符串匹配操作)的慢查詢
--help顯?幫助信息并退出
-h host_name

與*-slow.log?件名對應的MySQL服務器主機名。 可以包含通配符。默認值是*(匹配所有)。

如: /var/lib/mysql/iZ7xv6ge3eb3kvqovp1jw7Z(主機名)-slow.log 把所有集群里面慢日志都集中在一臺機器上? ?主機級別

-i name服務器實例的名稱? mysql級別
-l不要從總時間中減去鎖占?的時間
-r倒序順列
-s sort_type如何對輸出進?排序
-t N顯?輸出中的前N個查詢 分析前n條數據
--verbose , -v打印有關程序功能的更多信息

-s sort_type sort_type可選的值如下所示:
t , at : 按查詢時間或平均查詢時間排序,默認排序

l , al : 按鎖占?時間或平均鎖占?時間排序

r , ar : 按發送的?數或平均發送的?數排序

c : 按計數排序

?mysqlbinlog - 處理二進制日志文件

什么是二進制日志文件:

我們平時對數據庫的修改,包括對數據的增刪改,都會被描述成?個"事件"每個"事件"都會以?進制的形式記錄在?個?件?,這個?件就是服務器的?進制?志?件,稱為Binary Log或binlog??關于?進制?志?件的具體格式與使?場景我們在MySQL 主從復制(集群部署的時候,數據庫的查詢比寫使用更加頻繁, 此時就會把集群分為主節點和若干個從結點,主結點寫入,從結點查詢,寫入的數據(修改數據)會把這個操作作為一個事件保存在binglog里面(某一行,某一個字符做了哪些修改),從結點會定時讀取整個binglog,把里面的二進制解析成sql語句然后執行一次, 這就是主從同步)專題 講解

作用:

mysqlbinlog 能夠以?本格式顯??進制?志?件中的內容

注意事項

? binlog的默認保存路徑是數據?錄:

? Linux下默認?錄:/var/lib/mysql

? Windows下默認?錄:C:\ProgramData\MySQL\MySQL Server 8.0\Data

? binlog是以 .00000n 結尾命名的?件,n不斷遞增

# binlog的名字可以在選項?件?配置,我這?默認的是

binlog開頭root@guangchen-vm:/var/lib/mysql# ll binlog*

mysqlbinlog使用方法

mysqlbinlog [options] log_file ...
先把字符集注解掉:?vim /etc/mysql/my.cnf?

?然后我們輸入這個指令查看二進制文件: mysqlbinlog binlog.000001

我們介紹一下一個事件

binlog.000010 的輸出內容中包含各種事件,事件信息包括 SQL 語句、執?語句的服務器 ID、語

句執?時的時間戳、花費的時間等等。?志的具體格式我們這?先不做討論。

選項文件

mysqlbinlog 有如下常?選項,可以在命令?中指定,也可以在選項?件中通過 [mysqlbinlog] 和 [client] 組進?指定

mysqlslap - 負載仿真客戶端

作用: mysqlslap是一個診斷程序, 用于模擬MySQL服務器的客戶端負載(模擬很多客戶端同時連接服務器,執行很多次查詢,查看服務器的負載情況,每個查詢執行的時間是多少), 并報告每個階段的時間, 就好比多個客戶端正在訪問服務器一樣.

使用方法:?mysqlslap [options]

注意事項:

1. 可以通過 --create 或 --query 選項指定包含SQL語句的字符串或包含SQL語句的?件

2. 如果指定?個包含SQL語句的?件,默認情況下每?必須包含?條語句(也就是說,隱式語句分隔符是換?符)

3. 如果要把?條語句分為多?書寫,可以使? --delimiter 選項指定不同的分隔符

4. 不能在?件中包含注釋,因為mysqlslap不能解析注釋。

5. mysqlslap運?分為三個階段:

????????a. 創建測試數據階段:創建?于測試的庫、表或數據,這個階段使?單個客?端連接

????????b. 運?負載測試階段,這個階段可以使?許多客?端連接

????????c. 清理階段:執?刪除表,斷開連接等操作,這個階段使?單個客?端連接

示例:

1. 提供?定義的創建和查詢語句,創建50個客?端連接,每個客?端進?200次 select 查詢(在??內輸?命令)??

?mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23);" --query="SELECT * FROM a" --concurrency=50 --iterations=200 -u root -p
然后會執行一段時間, 會生成測試報告

2.?讓mysqlslap?包含兩個 INT 列和三個 VARCHAR 列的表?動構建查詢的SQL語句。使?5個客?端,每個客?端查詢20次。

mysqlslap --concurrency=5 --iterations=20 --number-int-cols=2 --number-chat -uroot -p

3.?從指定的?件中加載創建、插?和查詢SQL語句。SQL?件中的語句以 ";" 分隔。使?5個客?

端,每個客?端查詢5次。(自己后面執行一下)

mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";" -uroot -p
常用選項:

mysqlslap 有如下常?選項,可以在命令?中指定,也可以在選項?件中通過 [mysqlslap] 和[client] 組進?指定
?

mysqlslap 應用于性能測試(重要: 測試數據庫)

1> 基本語法

mysqlslap --user=<username> --password=<password> --host=<hostname> --concurrency=<number_of_clients> --iterations=<number_of_iterations> --query=<sql_query> --create=<sql_create>

--user: 寫你的數據庫用戶名

--password: 寫你的數據庫密碼

--host: 寫你指定的主機名

--concurrency: 寫你測試的并發數(模擬虛擬用戶)

--iteratiion: 寫性能測試迭代多少次

--query: 寫執行sql的查詢語句或者含有sql查詢語句的.sql文件

--create: 寫執行sql的創建語句或者含有sql創建語句的.sql文件


2> 使用vim來創建含有sql語句的sql文件

把sql語句復制到里面去

3> 執行創建數據庫的sql測試:

mysqlslap --user=root --password=123456 --host=localhost --concurrency=100 --iterations=3 --create=create.sql

該指令使用 mysqlslap 工具連接到本地 MySQL 服務器,使用 root 用戶和密碼 123456,模擬 100 個并發連接,執行 3 次測試迭代,基于 create.sql 文件中的 SQL 語句創建數據庫結構并進行性能測試。

4> 執行查詢sql的測試

?mysqlslap --user=root --password=123456 --host=localhost --concurrency=100 --iterations=10 --create-schema=test_db --query=query.sql

該指令使用 mysqlslap 工具連接到本地 MySQL 服務器,使用 root 用戶和密碼 123456,模擬 100 個并發連接,執行 3 次測試迭代,并根據 create.sql 文件中的 SQL 語句創建數據庫對象進行性能測試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78886.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78886.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78886.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VS2022 設置 Qt Project Settings方法

本文解決的問題&#xff1a;創建完成后&#xff0c;如需要用到Sql或者Socket等技術&#xff0c;需要設置Qt Project Settings&#xff1b; 1、打開VS2022編譯器&#xff0c;創建QT項目工程 2、創建完成后&#xff0c;點擊 解決方案 →右鍵屬性 3、選擇 Qt Project Settings →…

React:封裝一個評論回復組件

分析 用戶想要一個能夠顯示評論列表&#xff0c;并且允許用戶進行回復的組件。可能還需要支持多級回復&#xff0c;也就是對回復進行再回復。然后&#xff0c;我要考慮組件的結構和功能。 首先&#xff0c;數據結構方面&#xff0c;評論應該包含id、內容、作者、時間&#xf…

wx讀書某sign算法詳解

未加固 版本&#xff1a;9.2.3 前置知識&#xff1a; (v41 & 0xFFFFFFFFFFFFFFFELL) 是一種高效的奇偶檢查方法&#xff0c;用于判斷數值 v41 是否為奇數。 std::sort<std::lessstd::string,std::string &,std::string>(a1, v6, s); 排序算法 # 完全等價的字…

Django的異步任務隊列管理_Celery

1 基本原理 Celery 是一個異步任務隊列&#xff0c;能夠將耗時操作&#xff08;如發郵件、處理圖片、網絡爬蟲等&#xff09;從 Django 主線程中分離出來&#xff0c;由后臺的 worker 處理&#xff0c;避免阻塞請求。Celery 作為獨立運行的后臺進程&#xff08;Worker&#xf…

【計算機網絡】Linux網絡的幾個常用命令

&#x1f4da; 博主的專欄 &#x1f427; Linux | &#x1f5a5;? C | &#x1f4ca; 數據結構 | &#x1f4a1;C 算法 | &#x1f152; C 語言 | &#x1f310; 計算機網絡 相關文章&#xff1a;計算機網絡專欄 目錄 ping&#xff08;檢測網絡連通性&#xff09;…

全開源、私有化部署!輕量級用戶行為分析系統-ClkLog

ClkLog是一款支持私有化部署的全開源埋點數據采集與分析系統&#xff0c;兼容Web、App、小程序多端埋點&#xff0c;快速洞察用戶訪問路徑、行為軌跡&#xff0c;并生成多維用戶畫像。助力中小團隊搭建輕量靈活的用戶行為分析平臺。 為什么需要一款私有化的埋點分析系統&#x…

golang定時器的精度

以 go1.23.3 linux/amd64 為例。 定時器示例代碼&#xff1a; package mainimport ("context""fmt""time" )var ctx context.Contextfunc main() {timeout : 600 * time.Secondctx, _ context.WithTimeout(context.Background(), timeout)dea…

svn 遠程服務搜索功能

svn服務器沒有遠程搜索功能&#xff0c;靠人工檢索耗時耗力&#xff0c;當服務器文件過多時&#xff0c;全部checkout到本地檢索&#xff0c;耗時太久。 1. TortoiseSVN 安裝注意事項 下載官網地址&#xff1a;https://tortoisesvn.en.softonic.com/download 安裝時選中 co…

uniapp-商城-39-shop 購物車 選好了 進行訂單確認4 配送方式2 地址頁面

上面講基本的樣式和地址信息&#xff0c;但是如果沒有地址就需要添加地址&#xff0c;如果有不同的地址就要選地址。 來看看處理方式&#xff0c; 1、回顧 在delivery-layout中 methods:{goAddress(){uni.navigateTo({url:"/pagesub/pageshop/address/addrlist"})…

Linux命令-iostat

iostat 命令介紹 iostat 是一個用于監控 Linux 系統輸入/輸出設備加載情況的工具。它可以顯示 CPU 的使用情況以及設備和分區的輸入/輸出統計信息&#xff0c;對于診斷系統性能瓶頸&#xff08;如磁盤或網絡活動緩慢&#xff09;特別有用。 語法&#xff1a; iostat [options…

vue2關于Node.js17及以上報digital envelope錯誤的解決辦法

文章目錄 簡介錯誤原因解決方案設置環境變量修改package.json安裝舊版本Node.js更新依賴項更改加密設置 簡介 digital envelope routines::unsupported錯誤?通常發生在Node.js版本升級到17或更高版本后&#xff0c;因為這些版本開始使用OpenSSL 3.0&#xff0c;它對算法和密鑰…

LLM - Large Language Model

回顧2024&#xff1a;與LLM又相伴一年的經歷與思考 - 知乎萬字長文入門大語言模型&#xff08;LLM&#xff09; - 知乎“大模型本質就是兩個文件&#xff01;”特斯拉前AI總監爆火LLM科普&#xff0c;時長1小時&#xff0c;面向普通大眾 - 知乎大模型本質及趨勢剖析&#xff0c…

Linux 內核網絡協議棧中的關鍵數據結構:inet_skb_parm 與 ip_options

在 Linux 內核的網絡協議棧中,數據包的高效處理依賴于一系列精心設計的數據結構。這些結構體不僅需要存儲網絡數據的元信息,還需支持復雜的協議邏輯(如路由、分片、安全策略等)。本文聚焦兩個核心結構體 struct inet_skb_parm 和 struct ip_options,解析它們的設計原理、功…

如何修復卡在恢復模式下的 iPhone:簡短指南

Apple 建議使用恢復模式作為最后的手段&#xff0c;以便在 iPhone 啟動循環或顯示 Apple 標志時恢復 iPhone。這是解決持續問題的簡單方法&#xff0c;但您很少使用。但是&#xff0c;當您的 iPhone 卡住恢復模式本身時&#xff0c;您會怎么做&#xff1f;雖然 iPhone 卡在這種…

10前端項目----商品詳情頁/滾輪行為

商品詳情頁面 商品詳情組件發送請求獲取相應商品詳情信息組件展示數據 優化一下路由配置代碼滾輪自動置頂 商品詳情組件 路由配置 點擊商品進行跳轉—將Detail組件變成路由組件 從商品到詳情&#xff0c;肯定需要傳參(產品ID)告訴Detail是哪個商品&#xff0c;需要展示哪個商品…

DIFY 又跟新了,來到 1.3.0 版本,看正文

歡迎來到 1.3.0 版本&#xff01;添加了各種巧妙的功能、修復了錯誤&#xff0c;并帶來了一些新功能&#xff1a; 一、核心亮點&#xff1a; 結構化輸出 1、LLM 節點新增JSON Schema編輯器&#xff0c;確保大語言模型能夠返回符合預設格式的JSON數據。這一功能有助于提升數據…

git檢查提交分支和package.json的version版本是否一致

這里寫自定義目錄標題 一、核心實現步驟?1.安裝必要依賴?2.初始化 Husky?3.創建校驗腳本?4.配置 lint-staged?5.更新 Husky 鉤子? 三、工作流程說明?四、注意事項? 以下是基于 Git Hooks 的完整解決方案&#xff0c;通過 husky 和自定義腳本實現分支名與版本號一致性校…

react-navigation-draw抽屜導航

心得寫在前面分享給大家&#xff1a; 我的實現方法&#xff0c;并沒有完全安裝官網來做&#xff0c;而是進行了簡化&#xff0c;效果是一樣的。沒有按照官網說的修改metro.config.js文件&#xff0c;同時也沒有 react-native-gesture-handler 的安裝后&#xff0c;我們需要有條…

【計算機視覺】CV實戰項目-高分辨率遙感圖像語義分割:High-Resolution-Remote-Sensing-Semantic-Segmentation

高分辨率遙感圖像語義分割技術解析與實戰指南 項目背景與意義核心技術解析1. **膨脹預測&#xff08;Dilated Prediction&#xff09;**2. **后處理優化**3. **半監督學習&#xff1a;偽標簽&#xff08;Pseudo Labeling&#xff09;**4. **可視化與監控** 實戰指南&#xff1a…

免費送源碼:Java+SSM+MySQL 基于SSM開發的校園心理咨詢平臺系統的設計與實現 計算機畢業設計原創定制

目 錄 1 緒論 1 1.1 研究背景 1 1.2開發現狀 1 1.3論文結構與章節安排 2 2 校園心理咨詢平臺系統系統分析 3 2.1 可行性分析 3 2.1.1 技術可行性分析 3 2.1.2 經濟可行性分析 3 2.1.3 法律可行性分析 3 2.2 系統功能分析 3 2.2.1 功能性分析 4 2.2.2 非功能性分析…