最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中實(shí)用且高頻的SQL工具與腳本分享

 更新時(shí)間:2025年06月27日 10:54:08   作者:岫珩  
這篇文章主要介紹了一些實(shí)用且高頻的?SQL?工具腳本代碼示例,涵蓋數(shù)據(jù)庫維護(hù)、性能優(yōu)化、數(shù)據(jù)操作等場(chǎng)景,適用于?MySQL、PostgreSQL?等主流數(shù)據(jù)庫,希望對(duì)大家有所幫助

一、實(shí)用且高頻的 SQL 工具腳本

以下是一些實(shí)用且高頻的 SQL 工具腳本代碼示例,涵蓋數(shù)據(jù)庫維護(hù)、性能優(yōu)化、數(shù)據(jù)操作等場(chǎng)景,適用于 MySQL、PostgreSQL 等主流數(shù)據(jù)庫:

1. 數(shù)據(jù)庫維護(hù)類

1.1 數(shù)據(jù)庫備份與恢復(fù)

-- MySQL 備份單表(導(dǎo)出結(jié)構(gòu)和數(shù)據(jù))
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名 > backup_table.sql

-- PostgreSQL 備份整個(gè)數(shù)據(jù)庫
pg_dump -U 用戶名 -d 數(shù)據(jù)庫名 > backup_db.sql

-- 恢復(fù)備份(通用)
mysql -u 用戶名 -p 數(shù)據(jù)庫名 < backup.sql
psql -U 用戶名 -d 數(shù)據(jù)庫名 -f backup.sql

1.2 批量生成表結(jié)構(gòu)文檔

-- MySQL 查詢所有表結(jié)構(gòu)
SELECT 
    TABLE_NAME AS 表名,
    COLUMN_NAME AS 字段名,
    DATA_TYPE AS 數(shù)據(jù)類型,
    COLUMN_COMMENT AS 描述
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_SCHEMA = '數(shù)據(jù)庫名';

2. 性能優(yōu)化類

2.1 索引分析與優(yōu)化

-- MySQL 查看未使用索引的表
SELECT 
    object_schema, object_name, index_name
FROM 
    performance_schema.table_io_waits_summary_by_index_usage
WHERE 
    index_name IS NOT NULL
    AND count_star = 0;

-- PostgreSQL 查找缺失索引
SELECT 
    relname AS 表名,
    seq_scan - idx_scan AS 全表掃描次數(shù)差,
    CASE 
        WHEN seq_scan - idx_scan > 0 THEN '建議添加索引'
        ELSE '無需優(yōu)化'
    END AS 建議
FROM 
    pg_stat_all_tables
WHERE 
    schemaname = 'public';

2.2 檢測(cè)長(zhǎng)時(shí)間運(yùn)行的查詢

-- MySQL 查看正在執(zhí)行的慢查詢
SHOW FULL PROCESSLIST;
-- 或通過慢查詢?nèi)罩痉治觯ㄐ杼崆伴_啟配置)

-- PostgreSQL 監(jiān)控活躍查詢
SELECT 
    pid, query, now() - query_start AS 執(zhí)行時(shí)長(zhǎng)
FROM 
    pg_stat_activity
WHERE 
    state = 'active'
    AND query NOT LIKE '%pg_stat_activity%';

3. 數(shù)據(jù)操作類

3.1 批量插入/更新

-- 批量插入(MySQL/PostgreSQL通用)
INSERT INTO users (name, age) VALUES
('Alice', 25),
('Bob', 30),
('Charlie', 28);

-- 批量更新(MySQL)
UPDATE users
SET status = CASE id
    WHEN 1 THEN 'active'
    WHEN 2 THEN 'inactive'
END
WHERE id IN (1, 2);

-- 批量更新(PostgreSQL)
UPDATE users AS u
SET status = tmp.status
FROM (VALUES
    (1, 'active'),
    (2, 'inactive')
) AS tmp(id, status)
WHERE u.id = tmp.id;

3.2 數(shù)據(jù)去重

-- 通用:刪除重復(fù)記錄(保留id最大的一條)
DELETE FROM orders
WHERE id NOT IN (
    SELECT MAX(id)
    FROM orders
    GROUP BY order_no
);

3.3 分頁查詢優(yōu)化

-- MySQL(LIMIT-OFFSET)
SELECT * FROM products 
ORDER BY id
LIMIT 10 OFFSET 20;  -- 第3頁,每頁10條

-- PostgreSQL(窗口函數(shù)高效分頁)
SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS row_num
    FROM products
) AS tmp
WHERE row_num BETWEEN 21 AND 30;

4. 監(jiān)控與安全類

4.1 用戶權(quán)限檢查

-- MySQL 查看用戶權(quán)限
SHOW GRANTS FOR '用戶名'@'主機(jī)';

-- PostgreSQL 列出所有用戶角色
SELECT rolname, rolcreaterole, rolsuper 
FROM pg_roles;

4.2 表空間監(jiān)控

-- MySQL 查看表大小
SELECT 
    TABLE_NAME AS 表名,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS 大小(MB)
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_SCHEMA = '數(shù)據(jù)庫名'
ORDER BY 
    (DATA_LENGTH + INDEX_LENGTH) DESC;

-- PostgreSQL 查看數(shù)據(jù)庫大小
SELECT 
    pg_size_pretty(pg_database_size('數(shù)據(jù)庫名')) AS 大小;

5. 動(dòng)態(tài) SQL 與數(shù)據(jù)清洗

5.1 動(dòng)態(tài)生成條件查詢

-- 示例:根據(jù)參數(shù)動(dòng)態(tài)篩選(偽代碼邏輯)
SET @sql = CONCAT('
    SELECT * FROM orders 
    WHERE 1=1
    ', IF(region IS NOT NULL, ' AND region = ?', ''),
    ' ORDER BY create_time DESC'
);
PREPARE stmt FROM @sql;
EXECUTE stmt USING region_value;

5.2 數(shù)據(jù)清洗(拆分字段)

-- MySQL 拆分逗號(hào)分隔的字符串
SELECT 
    id,
    SUBSTRING_INDEX(SUBSTRING_INDEX(tags, ',', n), ',', -1) AS tag
FROM 
    products
CROSS JOIN 
    (SELECT 1 AS n UNION SELECT 2 UNION SELECT 3) numbers
WHERE 
    n <= LENGTH(tags) - LENGTH(REPLACE(tags, ',', '')) + 1;

-- PostgreSQL 使用 regexp_split_to_table
SELECT 
    id, 
    regexp_split_to_table(tags, ',') AS tag
FROM 
    products;

注意事項(xiàng)

  • 數(shù)據(jù)庫差異:部分語法需根據(jù) MySQL、PostgreSQL 等調(diào)整(如分頁、字符串函數(shù))。
  • 權(quán)限控制:部分操作需要管理員權(quán)限(如 pg_stat_activity 查詢)。
  • 生產(chǎn)環(huán)境:慎用 DELETE/UPDATE,操作前先備份數(shù)據(jù)(如 CREATE TABLE backup AS SELECT * FROM table)。

二、實(shí)用且高頻的 SQL 腳本工具

以下是一些實(shí)用且高頻的SQL腳本工具推薦,涵蓋性能優(yōu)化、審計(jì)、分析等場(chǎng)景,結(jié)合功能特點(diǎn)與適用場(chǎng)景進(jìn)行說明:

1. MySQLTuner.pl

功能:MySQL性能診斷工具,分析參數(shù)配置、存儲(chǔ)引擎、日志文件等,提供優(yōu)化建議。

適用場(chǎng)景:快速定位MySQL內(nèi)存、連接數(shù)、緩存等配置問題。

特點(diǎn)

支持MySQL/MariaDB/Percona Server,覆蓋約300項(xiàng)指標(biāo)。

報(bào)告標(biāo)記關(guān)鍵問題(如[!!]),并給出“Recommendations”優(yōu)化建議。

使用示例

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl  
./mysqltuner.pl --socket /var/lib/mysql/mysql.sock  

2. pt-query-digest

功能:Percona Toolkit中的慢查詢?nèi)罩痉治龉ぞ撸稍敿?xì)報(bào)告。

適用場(chǎng)景:分析MySQL慢查詢,識(shí)別高負(fù)載SQL語句。

特點(diǎn)

支持從日志、進(jìn)程列表或TCP抓包分析查詢。

提供執(zhí)行時(shí)間分布、TOP SQL排名等統(tǒng)計(jì)信息。

使用示例

pt-query-digest /var/lib/mysql/slow.log > slow_report.log  
# 分析指定時(shí)間范圍  
pt-query-digest --since '2025-04-28 00:00:00' --until '2025-04-29 00:00:00' slow.log  

3. Yearning

功能:SQL審計(jì)平臺(tái),規(guī)范工單提交與執(zhí)行流程。

適用場(chǎng)景:團(tuán)隊(duì)協(xié)作中避免誤操作,記錄SQL執(zhí)行歷史。

特點(diǎn)

支持工單審核、權(quán)限控制、自動(dòng)生成回滾語句。

提供可視化界面,兼容99%的MySQL語法。

部署

支持自定義審核流程,適合中小團(tuán)隊(duì)使用。

4. QweryBuilder

功能:多數(shù)據(jù)庫腳本管理工具,支持跨平臺(tái)操作。

適用場(chǎng)景:管理多種數(shù)據(jù)庫(如SQL Server、Oracle、MySQL)的腳本與架構(gòu)。

特點(diǎn)

提供差異對(duì)比、自動(dòng)格式化、數(shù)據(jù)庫搜索等功能。

集成WinMerge進(jìn)行對(duì)象差異分析,支持自定義代碼片段。

適用性:適合需統(tǒng)一管理異構(gòu)數(shù)據(jù)庫的環(huán)境。

5. Percona Toolkit(含pt-variable-advisor)

功能:MySQL參數(shù)分析與優(yōu)化建議。

適用場(chǎng)景:檢查變量配置合理性(如緩沖池大小、線程配置)。

特點(diǎn)

識(shí)別潛在問題并標(biāo)記為WARN,如不合理的超時(shí)設(shè)置。

使用示例

pt-variable-advisor localhost --socket /var/lib/mysql/mysql.sock  

6. tuning-primer.sh

功能:MySQL性能調(diào)優(yōu)腳本,提供針對(duì)性建議。

適用場(chǎng)景:快速獲取內(nèi)存、查詢緩存等優(yōu)化建議。

特點(diǎn)

輸出紅色警告提示關(guān)鍵問題,如未優(yōu)化的查詢緩存配置。

使用示例

wget https://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh  
./tuning-primer.sh  

總結(jié)

  • 性能優(yōu)化:優(yōu)先使用MySQLTuner.plpt-query-digest快速定位問題。
  • 團(tuán)隊(duì)協(xié)作:采用Yearning規(guī)范SQL執(zhí)行流程,避免生產(chǎn)事故。
  • 多數(shù)據(jù)庫管理QweryBuilder適合異構(gòu)環(huán)境腳本統(tǒng)一管理。

到此這篇關(guān)于MySQL中實(shí)用且高頻的SQL工具與腳本分享的文章就介紹到這了,更多相關(guān)SQL實(shí)用腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL的InnoDB引擎中聚簇索引和非聚簇索引詳解

    MySQL的InnoDB引擎中聚簇索引和非聚簇索引詳解

    InnoDB中聚簇索引存儲(chǔ)完整數(shù)據(jù)行,非聚簇索引存儲(chǔ)索引鍵+主鍵值,聚簇索引直接查詢數(shù)據(jù),非聚簇需回表,主鍵建議用自增ID減少頁分裂,二級(jí)索引可優(yōu)化覆蓋索引提升效率
    2025-08-08
  • MySQL主從狀態(tài)檢查的實(shí)現(xiàn)

    MySQL主從狀態(tài)檢查的實(shí)現(xiàn)

    這篇文章主要介紹了MySQL主從狀態(tài)檢查的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • MySQL服務(wù)器權(quán)限與對(duì)象權(quán)限詳解

    MySQL服務(wù)器權(quán)限與對(duì)象權(quán)限詳解

    這篇文章主要介紹了MySQL服務(wù)器權(quán)限與對(duì)象權(quán)限,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • MySQL 中定義和使用變量的方法

    MySQL 中定義和使用變量的方法

    MySQL 提供了多種類型的變量,以適應(yīng)不同的應(yīng)用場(chǎng)景,用戶定義的變量適用于簡(jiǎn)單的會(huì)話內(nèi)數(shù)據(jù)傳遞,局部變量適合在復(fù)雜的存儲(chǔ)過程中使用,而會(huì)話變量則用于調(diào)整和優(yōu)化數(shù)據(jù)庫會(huì)話的行為,這篇文章主要介紹了MySQL 中定義和使用變量,需要的朋友可以參考下
    2024-04-04
  • MySql Group By對(duì)多個(gè)字段進(jìn)行分組的實(shí)現(xiàn)方法

    MySql Group By對(duì)多個(gè)字段進(jìn)行分組的實(shí)現(xiàn)方法

    這篇文章主要介紹了MySql Group By對(duì)多個(gè)字段進(jìn)行分組的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-09-09
  • 超出MySQL最大連接數(shù)問題及解決

    超出MySQL最大連接數(shù)問題及解決

    這篇文章主要介紹了超出MySQL最大連接數(shù)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • mysql之create index和alter add index用法及說明

    mysql之create index和alter add index用法及說明

    本文詳細(xì)介紹了MySQL創(chuàng)建索引的三種方法,包括直接創(chuàng)建索引和使用ALTER TABLE添加索引,并對(duì)比了兩種方法的優(yōu)缺點(diǎn),建議在創(chuàng)建索引時(shí)優(yōu)先使用ALTER TABLE以提高效率
    2026-06-06
  • mysql增加和刪除索引的相關(guān)操作

    mysql增加和刪除索引的相關(guān)操作

    下面小編就為大家?guī)硪黄猰ysql增加和刪除索引的相關(guān)操作。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • Mysql LONGTEXT 類型存儲(chǔ)大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)

    Mysql LONGTEXT 類型存儲(chǔ)大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)

    MySql2.cpp : Defines the entry point for the console application.
    2009-07-07
  • MySQL插入時(shí)間戳字段的值實(shí)現(xiàn)

    MySQL插入時(shí)間戳字段的值實(shí)現(xiàn)

    在MySQL中,我們經(jīng)常會(huì)遇到需要插入時(shí)間戳字段的情況,包括使用NOW()函數(shù)插入當(dāng)前時(shí)間戳,使用FROM_UNIXTIME()插入指定時(shí)間戳,本文就來介紹一下,感興趣的可以了解一下
    2024-09-09

最新評(píng)論

贡山| 九龙坡区| 利川市| 铁力市| 鹤山市| 星座| 米泉市| 富平县| 禄丰县| 甘泉县| 琼中| 三江| 朝阳县| 伊吾县| 灵石县| 班玛县| 永寿县| 炎陵县| 梨树县| 贡觉县| 邹城市| 江油市| 永嘉县| 伊宁县| 南雄市| 重庆市| 若尔盖县| 新蔡县| 康保县| 安岳县| 昌图县| 河池市| 临邑县| 建瓯市| 措勤县| 辽中县| 正宁县| 屏山县| 囊谦县| 广灵县| 宜春市|