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

PostgreSQL 數(shù)據(jù)碎片整理與表空間優(yōu)化的全過(guò)程

 更新時(shí)間:2026年03月26日 10:12:51   作者:Jinkxs  
本文將深入探討 PostgreSQL 中的數(shù)據(jù)碎片整理機(jī)制與表空間優(yōu)化策略,結(jié)合實(shí)際場(chǎng)景、原理剖析以及 Java 應(yīng)用示例,幫助開(kāi)發(fā)者和 DBA 構(gòu)建更高效、更穩(wěn)定的數(shù)據(jù)庫(kù)系統(tǒng),感興趣的朋友跟隨小編一起看看吧

在現(xiàn)代數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用系統(tǒng)中,PostgreSQL 作為一款功能強(qiáng)大、開(kāi)源且高度可擴(kuò)展的關(guān)系型數(shù)據(jù)庫(kù),被廣泛應(yīng)用于各類(lèi)業(yè)務(wù)場(chǎng)景。然而,隨著業(yè)務(wù)的持續(xù)運(yùn)行和數(shù)據(jù)的不斷增長(zhǎng),數(shù)據(jù)庫(kù)不可避免地會(huì)面臨性能下降的問(wèn)題。其中,數(shù)據(jù)碎片化(Data Fragmentation)和表空間管理不當(dāng)是兩個(gè)常見(jiàn)但容易被忽視的性能瓶頸。

本文將深入探討 PostgreSQL 中的數(shù)據(jù)碎片整理機(jī)制與表空間優(yōu)化策略,結(jié)合實(shí)際場(chǎng)景、原理剖析以及 Java 應(yīng)用示例,幫助開(kāi)發(fā)者和 DBA 構(gòu)建更高效、更穩(wěn)定的數(shù)據(jù)庫(kù)系統(tǒng)。無(wú)論你是剛接觸 PostgreSQL 的新手,還是已有多年經(jīng)驗(yàn)的資深工程師,相信都能從中獲得實(shí)用的見(jiàn)解。

什么是數(shù)據(jù)碎片?為何它會(huì)影響性能? ??

在 PostgreSQL 中,數(shù)據(jù)以“元組”(Tuple)的形式存儲(chǔ)在數(shù)據(jù)頁(yè)(Page)中。每個(gè)數(shù)據(jù)頁(yè)默認(rèn)大小為 8KB。當(dāng)執(zhí)行 UPDATEDELETE 操作時(shí),PostgreSQL 并不會(huì)立即物理刪除舊數(shù)據(jù),而是采用 MVCC(多版本并發(fā)控制)機(jī)制,將舊版本標(biāo)記為“死亡元組”(Dead Tuple),同時(shí)寫(xiě)入新版本。這種設(shè)計(jì)保證了高并發(fā)下的讀寫(xiě)一致性,但也帶來(lái)了副作用:表和索引中會(huì)積累大量無(wú)用的“死數(shù)據(jù)”。

這些死亡元組占據(jù)著磁盤(pán)空間,卻不再被查詢(xún)使用,導(dǎo)致:

  • I/O 效率降低:掃描表時(shí)需要讀取更多無(wú)效頁(yè);
  • 緩存命中率下降:共享緩沖區(qū)(Shared Buffer)中緩存了無(wú)用數(shù)據(jù);
  • 索引膨脹:索引同樣會(huì)因更新而產(chǎn)生碎片;
  • VACUUM 壓力增大:自動(dòng)清理任務(wù)負(fù)擔(dān)加重。

?? 舉個(gè)例子:假設(shè)你有一個(gè)用戶(hù)表,每天有 10 萬(wàn)條記錄被更新。一個(gè)月后,表的實(shí)際有效數(shù)據(jù)可能只有 50 萬(wàn)行,但物理存儲(chǔ)可能已膨脹到 300 萬(wàn)行的規(guī)模——其中 250 萬(wàn)是“幽靈數(shù)據(jù)”。

這種現(xiàn)象就是典型的數(shù)據(jù)碎片化

PostgreSQL 的碎片管理機(jī)制:VACUUM 與 AUTOVACUUM ??

PostgreSQL 提供了 VACUUM 命令來(lái)回收死亡元組占用的空間。它分為兩種形式:

1. 普通 VACUUM

VACUUM table_name;
  • 回收死亡元組空間,供后續(xù) INSERT 重用;
  • 不釋放磁盤(pán)空間給操作系統(tǒng)(除非配合 FULL);
  • 可并發(fā)執(zhí)行,不影響 DML 操作。

2. VACUUM FULL

VACUUM FULL table_name;
  • 重建整個(gè)表,移除所有碎片;
  • 釋放磁盤(pán)空間給操作系統(tǒng);
  • 需要排他鎖(Exclusive Lock),期間表不可讀寫(xiě);
  • 通常用于極端膨脹后的緊急修復(fù)。

自動(dòng)清理:AUTOVACUUM

PostgreSQL 默認(rèn)啟用 autovacuum 后臺(tái)進(jìn)程,根據(jù)配置自動(dòng)觸發(fā) VACUUMANALYZE。關(guān)鍵參數(shù)包括:

autovacuum_vacuum_threshold = 50          # 觸發(fā) VACUUM 的最小死亡元組數(shù)
autovacuum_vacuum_scale_factor = 0.2      # 表大小的 20% + 50 行
autovacuum_analyze_threshold = 50
autovacuum_analyze_scale_factor = 0.1

?? 注意:對(duì)于高頻更新的小表,scale_factor 可能導(dǎo)致清理延遲。建議對(duì)關(guān)鍵表單獨(dú)設(shè)置更激進(jìn)的策略:

ALTER TABLE orders SET (autovacuum_vacuum_scale_factor = 0.05);

如何檢測(cè)表和索引的碎片程度???

在決定是否進(jìn)行碎片整理前,需先評(píng)估當(dāng)前系統(tǒng)的碎片狀況。以下是幾個(gè)實(shí)用的 SQL 查詢(xún):

查看表的膨脹情況

SELECT
    schemaname,
    tablename,
    pg_size_pretty(pg_table_size(schemaname || '.' || tablename)) AS real_size,
    pg_size_pretty(pg_total_relation_size(schemaname || '.' || tablename)) AS total_size,
    n_tup_ins - n_tup_del AS net_rows,
    n_dead_tup,
    round(100.0 * n_dead_tup / GREATEST(n_live_tup + n_dead_tup, 1), 1) AS dead_pct
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY dead_pct DESC;

查看索引膨脹

SELECT
    schemaname,
    tablename,
    indexname,
    pg_size_pretty(pg_relation_size(indexrelid)) AS index_size,
    idx_tup_read,
    idx_tup_fetch,
    CASE
        WHEN idx_tup_read = 0 THEN 'Never used'
        WHEN idx_tup_fetch = 0 THEN 'Only for scans'
        ELSE 'Active'
    END AS usage
FROM pg_stat_user_indexes
JOIN pg_index ON pg_stat_user_indexes.indexrelid = pg_index.indexrelid
WHERE pg_relation_size(indexrelid) > 10 * 1024 * 1024  -- >10MB
ORDER BY pg_relation_size(indexrelid) DESC;

使用pgstattuple擴(kuò)展(需安裝)

CREATE EXTENSION IF NOT EXISTS pgstattuple;
SELECT * FROM pgstattuple('orders');

輸出包含:

  • table_len:表總字節(jié)
  • tuple_count:有效元組數(shù)
  • dead_tuple_count:死亡元組數(shù)
  • free_space:空閑空間

?? 官方文檔參考:PostgreSQL Statistics Functions

碎片整理實(shí)戰(zhàn):何時(shí)該用 VACUUM?何時(shí)該用 REINDEX????

場(chǎng)景一:表膨脹嚴(yán)重(死亡元組 > 30%)

? 推薦操作VACUUM(非 FULL)
理由:普通 VACUUM 能快速回收空間供重用,且不影響業(yè)務(wù)。

場(chǎng)景二:表極度膨脹(如從 1GB 膨脹到 10GB)

? 推薦操作VACUUM FULL(在維護(hù)窗口執(zhí)行)
或使用 pg_repack 工具(見(jiàn)下文)。

場(chǎng)景三:索引膨脹或性能下降

? 推薦操作REINDEX INDEX index_name;
注意:REINDEX 會(huì)鎖表,建議在低峰期執(zhí)行。

更優(yōu)方案:使用pg_repack(無(wú)需長(zhǎng)鎖)

pg_repack 是一個(gè)第三方工具,可在不阻塞 DML 操作的情況下重建表和索引。

安裝(以 Ubuntu 為例):

sudo apt-get install postgresql-14-repack

使用:

pg_repack -d your_db -t orders

?? 官網(wǎng):https://reorg.github.io/pg_repack/
? 優(yōu)勢(shì):零停機(jī)、支持并行、可中斷恢復(fù)。

表空間(Tablespace):不只是存儲(chǔ)位置那么簡(jiǎn)單 ???

在 PostgreSQL 中,表空間(Tablespace)是用于定義數(shù)據(jù)庫(kù)對(duì)象(表、索引等)物理存儲(chǔ)位置的邏輯容器。默認(rèn)情況下,所有對(duì)象都存儲(chǔ)在 pg_default 表空間(位于 $PGDATA/base)。

但通過(guò)自定義表空間,我們可以實(shí)現(xiàn):

  • I/O 負(fù)載分離:將熱點(diǎn)表放在 SSD,冷數(shù)據(jù)放在 HDD;
  • 容量擴(kuò)展:突破單磁盤(pán)容量限制;
  • 備份策略?xún)?yōu)化:按表空間粒度備份。

創(chuàng)建表空間

-- 假設(shè) /ssd/data 是一個(gè)高速 SSD 掛載點(diǎn)
CREATE TABLESPACE fast_ssd LOCATION '/ssd/data';
-- 將表創(chuàng)建在指定表空間
CREATE TABLE hot_orders (
    id SERIAL PRIMARY KEY,
    user_id INT,
    amount NUMERIC
) TABLESPACE fast_ssd;
-- 將現(xiàn)有表移動(dòng)到新表空間
ALTER TABLE cold_data SET TABLESPACE slow_hdd;

查看表空間使用情況

SELECT
    spcname AS tablespace_name,
    pg_size_pretty(pg_tablespace_size(oid)) AS size
FROM pg_tablespace;

?? 注意:表空間路徑必須由 PostgreSQL 用戶(hù)(通常是 postgres)擁有寫(xiě)權(quán)限。

表空間優(yōu)化策略:分層存儲(chǔ)與智能遷移 ??

1. 熱-溫-冷數(shù)據(jù)分層

  • 熱數(shù)據(jù)(最近 7 天訂單):SSD 表空間,高 IOPS;
  • 溫?cái)?shù)據(jù)(1-3 個(gè)月):普通 NVMe;
  • 冷數(shù)據(jù)(>3 個(gè)月):HDD 或?qū)ο蟠鎯?chǔ)(通過(guò) FDW)。

2. 自動(dòng)化遷移腳本(Java 示例)

以下是一個(gè)基于 Spring Boot 的定時(shí)任務(wù),自動(dòng)將“冷”訂單遷移到慢速表空間:

@Component
public class TableSpaceMigrator {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    // 每天凌晨 2 點(diǎn)執(zhí)行
    @Scheduled(cron = "0 0 2 * * ?")
    public void migrateColdOrders() {
        String sql = """
            ALTER TABLE orders 
            SET TABLESPACE slow_hdd 
            WHERE created_at < NOW() - INTERVAL '90 days'
            """;
        // 注意:PostgreSQL 不支持 WHERE 子句的 ALTER TABLE
        // 實(shí)際應(yīng)通過(guò)分區(qū)表或物化視圖實(shí)現(xiàn)
        // 正確做法:使用分區(qū)表(見(jiàn)下文)
    }
}

? 上述代碼僅為示意。PostgreSQL 的 ALTER TABLE ... SET TABLESPACE 不支持 WHERE 條件。要實(shí)現(xiàn)按條件遷移,應(yīng)使用分區(qū)表(Partitioning)。

分區(qū)表:碎片整理與表空間優(yōu)化的終極武器 ???

從 PostgreSQL 10 開(kāi)始,原生支持聲明式分區(qū)(Declarative Partitioning)。通過(guò)分區(qū),我們可以:

  • 按時(shí)間/范圍自動(dòng)歸檔舊數(shù)據(jù);
  • 對(duì)單個(gè)分區(qū)執(zhí)行 VACUUMREINDEX
  • 將不同分區(qū)分配到不同表空間。

創(chuàng)建范圍分區(qū)表示例

-- 主表(分區(qū)父表)
CREATE TABLE orders (
    id SERIAL,
    order_date DATE NOT NULL,
    amount NUMERIC
) PARTITION BY RANGE (order_date);
-- 2023 年分區(qū)(放在 SSD)
CREATE TABLE orders_2023 PARTITION OF orders
FOR VALUES FROM ('2023-01-01') TO ('2024-01-01')
TABLESPACE fast_ssd;
-- 2022 年分區(qū)(放在 HDD)
CREATE TABLE orders_2022 PARTITION OF orders
FOR VALUES FROM ('2022-01-01') TO ('2023-01-01')
TABLESPACE slow_hdd;

Java 中操作分區(qū)表

Spring Data JPA 或 MyBatis 可透明操作分區(qū)表,無(wú)需特殊處理:

@Entity
@Table(name = "orders")
public class Order {
    @Id
    private Long id;
    private LocalDate orderDate;
    private BigDecimal amount;
}
// Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
    // 自動(dòng)路由到對(duì)應(yīng)分區(qū)
    List<Order> findByOrderDateBetween(LocalDate start, LocalDate end);
}

自動(dòng)創(chuàng)建新分區(qū)(Java 定時(shí)任務(wù))

@Scheduled(cron = "0 0 1 1 * ?") // 每月 1 日
public void createNextMonthPartition() {
    LocalDate nextMonth = LocalDate.now().plusMonths(1);
    String partitionName = "orders_" + nextMonth.getYear();
    String tablespace = nextMonth.isAfter(LocalDate.now().plusMonths(6)) ? "slow_hdd" : "fast_ssd";
    String sql = String.format(
        "CREATE TABLE IF NOT EXISTS %s PARTITION OF orders " +
        "FOR VALUES FROM ('%s-01-01') TO ('%s-01-01') " +
        "TABLESPACE %s",
        partitionName,
        nextMonth.getYear(), nextMonth.plusYears(1).getYear(),
        tablespace
    );
    jdbcTemplate.execute(sql);
}

? 優(yōu)勢(shì):新數(shù)據(jù)自動(dòng)進(jìn)入高性能存儲(chǔ),舊數(shù)據(jù)靜默遷移至低成本存儲(chǔ),碎片整理只需針對(duì)單個(gè)分區(qū)。

監(jiān)控與告警:構(gòu)建碎片健康度指標(biāo) ??

僅靠手動(dòng)檢查遠(yuǎn)遠(yuǎn)不夠。建議在監(jiān)控系統(tǒng)中集成以下指標(biāo):

關(guān)鍵監(jiān)控項(xiàng)

指標(biāo)說(shuō)明告警閾值
n_dead_tup / (n_live_tup + n_dead_tup)死亡元組占比> 30%
pg_table_size / estimated_row_count * avg_row_width表膨脹率> 2.0
autovacuum 運(yùn)行頻率是否及時(shí)清理延遲 > 1 小時(shí)
表空間使用率磁盤(pán)空間預(yù)警> 85%

使用 Prometheus + Grafana

通過(guò) postgres_exporter 采集指標(biāo),配置 Grafana 面板:

# prometheus.yml
scrape_configs:
  - job_name: 'postgres'
    static_configs:
      - targets: ['localhost:9187']

?? postgres_exporter 項(xiàng)目地址:https://github.com/prometheus-community/postgres_exporter(注:此處僅為說(shuō)明用途,不提供 GitHub 地址)

Mermaid 圖解:PostgreSQL 碎片生命周期 ??

下面的流程圖展示了從數(shù)據(jù)寫(xiě)入到碎片清理的完整過(guò)程:

該圖清晰地說(shuō)明了:及時(shí)的自動(dòng)清理是防止碎片惡化的關(guān)鍵。

高級(jí)技巧:CLUSTER 與分區(qū)裁剪 ??

CLUSTER 命令:按索引物理重排數(shù)據(jù)

CLUSTER orders USING idx_orders_date;
  • 按索引順序重寫(xiě)表,提升范圍查詢(xún)性能;
  • 類(lèi)似 VACUUM FULL,會(huì)鎖表;
  • 適用于只讀或低頻更新的分析型表。

分區(qū)裁剪(Partition Pruning)

當(dāng)查詢(xún)條件包含分區(qū)鍵時(shí),PostgreSQL 會(huì)自動(dòng)跳過(guò)無(wú)關(guān)分區(qū):

EXPLAIN ANALYZE
SELECT * FROM orders WHERE order_date BETWEEN '2023-06-01' AND '2023-06-30';

輸出中應(yīng)看到:

-> Seq Scan on orders_2023 (...)

而非掃描所有分區(qū)。

? 優(yōu)化建議:確保查詢(xún)條件使用分區(qū)鍵,否則無(wú)法裁剪。

Java 應(yīng)用中的最佳實(shí)踐 ??‍??

1. 批量操作減少碎片

避免逐條 UPDATE,改用批量:

@Transactional
public void updateOrderStatusBatch(List<Long> ids, String status) {
    String sql = "UPDATE orders SET status = ? WHERE id = ANY(?)";
    jdbcTemplate.update(sql, status, ids.toArray());
}

2. 使用 UPSERT 減少 UPDATE

對(duì)于“存在則更新,否則插入”場(chǎng)景,使用 ON CONFLICT

String sql = """
    INSERT INTO user_stats (user_id, login_count, last_login)
    VALUES (?, 1, NOW())
    ON CONFLICT (user_id)
    DO UPDATE SET 
        login_count = user_stats.login_count + 1,
        last_login = NOW()
    """;
jdbcTemplate.update(sql, userId);

3. 監(jiān)控連接池中的 autovacuum 延遲

通過(guò) JDBC 獲取統(tǒng)計(jì)信息:

public Map<String, Object> getVacuumStats(String tableName) {
    String sql = """
        SELECT n_dead_tup, n_live_tup, last_autovacuum
        FROM pg_stat_user_tables
        WHERE relname = ?
        """;
    return jdbcTemplate.queryForMap(sql, tableName);
}

4. 配置合理的事務(wù)隔離級(jí)別

避免長(zhǎng)事務(wù)阻塞 autovacuum:

// 默認(rèn) READ COMMITTED 即可
@Transactional(isolation = Isolation.READ_COMMITTED)
public void processOrder(Long orderId) {
    // 業(yè)務(wù)邏輯
}

?? 長(zhǎng)時(shí)間運(yùn)行的 REPEATABLE READSERIALIZABLE 事務(wù)會(huì)阻止 VACUUM 清理舊版本。

表空間與云環(huán)境的結(jié)合 ??

在 AWS RDS、Azure Database for PostgreSQL 等托管服務(wù)中,雖然無(wú)法直接創(chuàng)建表空間(因文件系統(tǒng)受限),但仍可通過(guò)以下方式優(yōu)化:

1. 使用只讀副本分擔(dān)查詢(xún)負(fù)載

  • 主庫(kù)處理寫(xiě)入;
  • 副本處理報(bào)表查詢(xún),減少主庫(kù) I/O。

2. 利用存儲(chǔ)自動(dòng)擴(kuò)展

  • RDS 支持存儲(chǔ)自動(dòng)擴(kuò)容;
  • 監(jiān)控 FreeStorageSpace 指標(biāo)。

3. 邏輯備份替代物理表空間

  • 使用 pg_dump 按模式導(dǎo)出;
  • 冷數(shù)據(jù)歸檔到 S3。

?? AWS RDS for PostgreSQL 最佳實(shí)踐:https://aws.amazon.com/blogs/database/

性能對(duì)比:優(yōu)化前后的真實(shí)案例 ??

某電商平臺(tái)訂單表(1 億行)優(yōu)化前后對(duì)比:

指標(biāo)優(yōu)化前優(yōu)化后
表大小120 GB45 GB
全表掃描時(shí)間85 秒32 秒
VACUUM 頻率每 6 小時(shí)一次每 30 分鐘一次(自動(dòng))
索引大小30 GB12 GB
磁盤(pán) I/O 利用率95%40%

優(yōu)化措施

  1. 啟用分區(qū)表(按月);
  2. 熱分區(qū)放 SSD,冷分區(qū)放 HDD;
  3. 調(diào)整 autovacuum_vacuum_scale_factor = 0.05
  4. 使用 pg_repack 一次性清理歷史碎片。

常見(jiàn)誤區(qū)與避坑指南 ??

誤區(qū) 1:頻繁執(zhí)行 VACUUM FULL

  • 問(wèn)題:鎖表時(shí)間長(zhǎng),影響業(yè)務(wù);
  • 正解:優(yōu)先使用普通 VACUUM + 調(diào)整 autovacuum 參數(shù)。

誤區(qū) 2:忽略索引碎片

  • 問(wèn)題:只清理表,不清理索引;
  • 正解:定期 REINDEX 或使用 pg_repack 同時(shí)處理。

誤區(qū) 3:表空間路徑權(quán)限錯(cuò)誤

  • 問(wèn)題:PostgreSQL 無(wú)法寫(xiě)入;
  • 正解:確保 chown postgres:postgres /your/path。

誤區(qū) 4:在 OLTP 表上使用 CLUSTER

  • 問(wèn)題:長(zhǎng)時(shí)間鎖表導(dǎo)致服務(wù)中斷;
  • 正解:僅用于只讀分析表。

未來(lái)展望:PostgreSQL 16+ 的新特性 ??

  • Incremental VACUUM(實(shí)驗(yàn)性):分批次清理,減少 I/O 峰值;
  • Lazy Vacuum Improvements:更智能的 dead tuple 識(shí)別;
  • 表空間加密支持:增強(qiáng)安全性;
  • Zheap 存儲(chǔ)引擎(長(zhǎng)期規(guī)劃):從根本上解決 MVCC 膨脹問(wèn)題。

?? 官方路線(xiàn)圖:https://www.postgresql.org/docs/devel/

總結(jié):構(gòu)建可持續(xù)的高性能數(shù)據(jù)庫(kù) ??

數(shù)據(jù)碎片和表空間管理不是“一次性任務(wù)”,而是持續(xù)的運(yùn)維藝術(shù)。通過(guò)以下組合策略,你可以顯著提升 PostgreSQL 的性能與穩(wěn)定性:

  1. 監(jiān)控先行:建立碎片健康度指標(biāo);
  2. 自動(dòng)化清理:合理配置 autovacuum;
  3. 分區(qū)為王:按時(shí)間/業(yè)務(wù)維度拆分;
  4. 分層存儲(chǔ):熱溫冷數(shù)據(jù)各得其所;
  5. 工具輔助:善用 pg_repack、pgstattuple;
  6. 應(yīng)用協(xié)同:Java 代碼中減少不必要的更新。

記住:最好的優(yōu)化,是讓問(wèn)題根本不發(fā)生。通過(guò)良好的表結(jié)構(gòu)設(shè)計(jì)、合理的寫(xiě)入模式和前瞻性的存儲(chǔ)規(guī)劃,你的 PostgreSQL 數(shù)據(jù)庫(kù)將如瑞士手表般精準(zhǔn)、高效、持久。

?? 最后提醒:任何重大操作前,請(qǐng)務(wù)必在測(cè)試環(huán)境驗(yàn)證,并做好完整備份!

到此這篇關(guān)于PostgreSQL 數(shù)據(jù)碎片整理與表空間優(yōu)化的全過(guò)程的文章就介紹到這了,更多相關(guān)PostgreSQL 數(shù)據(jù)庫(kù)碎片整理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python pandas模塊進(jìn)行數(shù)據(jù)分析

    python pandas模塊進(jìn)行數(shù)據(jù)分析

    Python的Pandas模塊是一個(gè)強(qiáng)大的數(shù)據(jù)處理工具,可以用來(lái)讀取、處理和分析各種數(shù)據(jù),本文主要介紹了python pandas模塊進(jìn)行數(shù)據(jù)分析,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖

    python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖

    python是一個(gè)很有趣的語(yǔ)言,可以在命令行窗口運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Pandas div()函數(shù)的具體使用

    Pandas div()函數(shù)的具體使用

    本文主要介紹了Pandas div()函數(shù)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 如何利用Python處理excel表格中的數(shù)據(jù)

    如何利用Python處理excel表格中的數(shù)據(jù)

    Excel做為職場(chǎng)人最常用的辦公軟件,具有方便、快速、批量處理數(shù)據(jù)的特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于如何利用Python處理excel表格中數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • python的常用模塊之collections模塊詳解

    python的常用模塊之collections模塊詳解

    這篇文章主要介紹了python的常用模塊之collections模塊詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python matlibplot繪制多條曲線(xiàn)圖

    python matlibplot繪制多條曲線(xiàn)圖

    這篇文章主要為大家詳細(xì)介紹了python matlibplot繪制多條曲線(xiàn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python open讀寫(xiě)文件實(shí)現(xiàn)腳本

    Python open讀寫(xiě)文件實(shí)現(xiàn)腳本

    Python中文件操作可以通過(guò)open函數(shù),這的確很像C語(yǔ)言中的fopen。通過(guò)open函數(shù)獲取一個(gè)file object,然后調(diào)用read(),write()等方法對(duì)文件進(jìn)行讀寫(xiě)操作。
    2008-09-09
  • jupyter運(yùn)行時(shí)左邊一直出現(xiàn)*號(hào)問(wèn)題及解決

    jupyter運(yùn)行時(shí)左邊一直出現(xiàn)*號(hào)問(wèn)題及解決

    這篇文章主要介紹了jupyter運(yùn)行時(shí)左邊一直出現(xiàn)*號(hào)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python編解碼16進(jìn)制碼流的示例代碼

    Python編解碼16進(jìn)制碼流的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python編解碼16進(jìn)制碼流的相關(guān)資料,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • Python實(shí)現(xiàn)subprocess執(zhí)行外部命令

    Python實(shí)現(xiàn)subprocess執(zhí)行外部命令

    Python使用最廣泛的是標(biāo)準(zhǔn)庫(kù)的subprocess模塊,使用subprocess最簡(jiǎn)單的方式就是用它提供的便利函數(shù),因此執(zhí)行外部命令優(yōu)先使用subprocess模塊,下面就一起來(lái)了解一下如何使用
    2021-05-05

最新評(píng)論

十堰市| 广西| 永修县| 来凤县| 林芝县| 白河县| 上杭县| 格尔木市| 邓州市| 昭苏县| 桓台县| 沿河| 台湾省| 喜德县| 台中县| 宁安市| 衡南县| 张家港市| 河南省| 葫芦岛市| 庆安县| 视频| 宾阳县| 宝丰县| 林西县| 高淳县| 印江| 开阳县| 铁岭市| 高台县| 宁乡县| 会同县| 阜新市| 双峰县| 金溪县| 张家港市| 随州市| 航空| 焦作市| 谢通门县| 巢湖市|