<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 概述 ReadySet 是一個高效的數據庫加速器 - 旨在通過緩存重復查詢的結果來減少對數據庫的直接查詢次數,從而提高查詢性能和響應速度 - 并且當數據庫中的數據發生變化時,ReadySet 會增量更新這些緩存 - 將應用程序直接連接到 ReadySet 代理,而無需對現有的代碼進行大規模的修改 - 支持 Postgres & MySQL ## 技巧 1. 因為 reayset 的 緩存需要顯示顯示聲明`CREATE CACHE FROM`,如果每次每個都顯示聲明非常的麻煩,可使用`SHOW PROXIED QUERIES;` 把支持緩存的取出來,并使用 `CRAETE CACHE FROM <query_id>` 進行緩存.這樣就不影響原來的業務邏輯 ## 安裝 - 支持 deb,rpm [github release](https://github.com/readysettech/readyset/releases/tag/stable-240829) - 支持 docker ## 語法 ### 查看連接情況 ``` > SHOW READYSET STATUS; name | value ----------------------------+------------------------- Database Connection | Connected Connection Count | 1 Snapshot Status | Completed Maximum Replication Offset | (0/1DD8368, 0/1DD8398) Minimum Replication Offset | (0/1DD7AA0, 0/1DD7F78) Last started Controller | 2024-09-19 02:46:23 UTC Last completed snapshot | 2024-09-19 02:47:13 UTC Last started replication | 2024-09-19 02:47:13 UTC (8 行記錄) ``` ### 檢查可緩存的sql ``` > SHOW PROXIED QUERIES; q_d2cb8b7dcf83f0bf | SELECT +| yes | 0 | * +| | | FROM +| | | "users" +| | | WHERE +| | | ("name" = $1) | | q_8bfb3751a18f051f | SELECT +| unsupported | 0 | DISTINCT "datlastsysoid"+| | | FROM +| | | "pg_database" | | q_e82a5a669558a4a | SELECT * FROM "users" | unsupported | 0 ``` > 通過這個指令可以找出支持緩存的sql > 已經緩存過的sql 不換顯示在列表中 > 列表中可以看到 `q_d2cb8b7dcf83f0bf ` 可以緩存,則可執行`create cache from SELECT * FROM users where name='Eve';` ### 緩存查詢 語法 ``` CREATE CACHE [ALWAYS] [<name>] FROM <query>; <name> 是可選的。如果緩存未命名,Readyset 會自動分配一個標識符。 <query> 是查詢的全文或query idReadyset 分配給查詢的唯一標識符(即),如 的輸出所示SHOW PROXIED QUERIES。 [ALWAYS] 是可選的。如果緩存查詢在事務內部執行(例如,由于 ORM),則使用ALWAYS針對 Readyset 運行查詢;否則,查詢將與事務的其余部分一起代理到上游數據庫。 ``` 也可使用 query_id 進行緩存 ``` CREATE CACHE FROM <query_id>; ``` ### 查看緩存的查詢 ``` > SHOW CACHES; > query id | cache name | query text | fallback behavior | count --------------------+------------+----------------------------------+-------------------+------- q_d2cb8b7dcf83f0bf | name_cache | SELECT +| fallback allowed | 0 | | "public"."users"."id", +| | | | "public"."users"."name", +| | | | "public"."users"."email", +| | | | "public"."users"."created_at" +| | | | FROM +| | | | "public"."users" +| | | | WHERE +| | | | ("public"."users"."name" = $1) | | q_d2cb8b7dcf83f0bf | name_cache | SELECT +| fallback allowed | 0 ``` ### 刪除緩存的查詢 ``` DROP CACHE <query id>; ``` ## ORM 支持 > [支持手冊](https://readyset.io/docs/get-started/connect/connect-an-application-via-an-orm) - mysql 和 postsql 支持 `js-TypeORM`,`go-gorm`,`php-Laravel` 等 ## 示例 ### pgsql 示例 ``` docker run -p5433:5432 -e POSTGRES_PASSWORD=12345678 -d postgres:15.8-alpine ``` 1. 修改 postgres 配置文件 ,并重啟 pgsql ``` vi /var/lib/postgresql/data/postgresql.conf // wal_level 改成 logical wal_level = logical ``` 2. psql 連接pgsql,并創建 demo 數據庫 ``` CREATE DATABASE mock_db; ``` 3. 創建 readyset docker ``` docker run -d -p 3307:3307 -p 6034:6034 --name readyset -e UPSTREAM_DB_URL=postgresql://postgres:12345678@192.168.0.50:5433/demo -e LISTEN_ADDRESS=0.0.0.0:3307 readysettech/readyset:latest ``` 4. psql 通過 3307 端口連接數據庫 ``` CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50), email VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'), ('Bob', 'bob@example.com'), ('Charlie', 'charlie@example.com'), ('David', 'david@example.com'), ('Eve', 'eve@example.com'); ``` 5. 聲明緩存 ``` > CREATE CACHE FROM SELECT * FROM users where name='Eve'; > show caches; query id | cache name | query text | fallback behavior | count --------------------+--------------------+----------------------------------+-------------------+------- q_d2cb8b7dcf83f0bf | q_d2cb8b7dcf83f0bf | SELECT +| fallback allowed | 0 | | "public"."users"."id", +| | | | "public"."users"."name", +| | | | "public"."users"."email", +| | | | "public"."users"."created_at" +| | | | FROM +| | | | "public"."users" +| | | | WHERE +| | | | ("public"."users"."name" = $1) | | ``` > 注意: 要緩存的數據需要 `CREATE CACHE FROM` 進行顯示聲明 > 只能緩存存在 條件的緩存
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看