当前位置: 首页 > wzjs >正文

做网站会员功能长春广告设计制作公司

做网站会员功能,长春广告设计制作公司,宣传推广图片,百度网盘搜索引擎网站数据库分区与分表详解 一、数据库分区 (Partitioning) 分区是将一个大表在物理上分割成多个更小的、更易管理的部分,但在逻辑上仍然表现为一个表。 1. 分区类型及SQL实现 (1) RANGE 分区 (按范围) CREATE TABLE sales (id INT NOT NULL,sale_date DATE NOT NUL…

数据库分区与分表详解

一、数据库分区 (Partitioning)

分区是将一个大表在物理上分割成多个更小的、更易管理的部分,但在逻辑上仍然表现为一个表。

1. 分区类型及SQL实现

(1) RANGE 分区 (按范围)
CREATE TABLE sales (id INT NOT NULL,sale_date DATE NOT NULL,amount DECIMAL(10,2),region VARCHAR(50)
) PARTITION BY RANGE (YEAR(sale_date)) (PARTITION p2020 VALUES LESS THAN (2021),PARTITION p2021 VALUES LESS THAN (2022),PARTITION p2022 VALUES LESS THAN (2023),PARTITION pmax VALUES LESS THAN MAXVALUE
);
(2) LIST 分区 (按列表)
CREATE TABLE employees (id INT NOT NULL,name VARCHAR(50),store_id INT
) PARTITION BY LIST (store_id) (PARTITION pNorth VALUES IN (1, 3, 5),PARTITION pSouth VALUES IN (2, 4, 6),PARTITION pOther VALUES IN (DEFAULT)
);
(3) HASH 分区 (哈希分布)
CREATE TABLE users (id INT NOT NULL,username VARCHAR(50),created_at DATETIME
) PARTITION BY HASH (id)
PARTITIONS 4;
(4) KEY 分区 (类似HASH但MySQL处理键)
CREATE TABLE logs (id INT NOT NULL,log_time DATETIME,content TEXT
) PARTITION BY KEY (id)
PARTITIONS 5;
(5) COLUMNS 分区 (支持多列)
CREATE TABLE rc3 (a INT,b INT
) PARTITION BY RANGE COLUMNS(a,b) (PARTITION p0 VALUES LESS THAN (10,10),PARTITION p1 VALUES LESS THAN (20,20),PARTITION p2 VALUES LESS THAN (MAXVALUE,MAXVALUE)
);

2. 分区管理操作

-- 添加分区
ALTER TABLE sales ADD PARTITION (PARTITION p2023 VALUES LESS THAN (2024)
);-- 删除分区
ALTER TABLE sales DROP PARTITION p2020;-- 重组分区
ALTER TABLE sales REORGANIZE PARTITION pmax INTO (PARTITION p2023 VALUES LESS THAN (2024),PARTITION pmax VALUES LESS THAN MAXVALUE
);-- 查看分区信息
SELECT * FROM information_schema.PARTITIONS 
WHERE TABLE_NAME = 'sales';

二、数据库分表 (Sharding)

分表是将数据分散到多个物理表中,每个表都是独立的,需要应用层或中间件管理。

1. 分表实现方式

(1) 应用层分表
-- 用户表按ID范围分表
CREATE TABLE users_0 (id BIGINT PRIMARY KEY,name VARCHAR(100),CHECK (id >= 0 AND id < 1000000)
);CREATE TABLE users_1 (id BIGINT PRIMARY KEY,name VARCHAR(100),CHECK (id >= 1000000 AND id < 2000000)
);-- 查询时需要指定表
SELECT * FROM users_0 WHERE id = 123;
SELECT * FROM users_1 WHERE id = 1500000;
(2) 使用视图统一访问
CREATE VIEW users AS
SELECT * FROM users_0
UNION ALL
SELECT * FROM users_1;
(3) 使用存储过程路由
DELIMITER //
CREATE PROCEDURE insert_user(IN p_id INT, IN p_name VARCHAR(100))
BEGINDECLARE table_suffix INT;SET table_suffix = FLOOR(p_id / 1000000);SET @sql = CONCAT('INSERT INTO users_', table_suffix, ' VALUES (?, ?)');SET @param1 = p_id;SET @param2 = p_name;PREPARE stmt FROM @sql;EXECUTE stmt USING @param1, @param2;DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

2. 分表查询策略

(1) 并行查询各分表
-- 查询所有分表中符合条件的记录
(SELECT * FROM users_0 WHERE name LIKE '张%')
UNION ALL
(SELECT * FROM users_1 WHERE name LIKE '张%');
(2) 按分片键精准查询
-- 根据ID计算应该查询哪个表
SET @table_num = FLOOR(1500000 / 1000000);
SET @sql = CONCAT('SELECT * FROM users_', @table_num, ' WHERE id = 1500000');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

三、分区与分表对比

特性分区分表
管理方式数据库自动管理需要应用层或中间件管理
透明性对应用完全透明应用需要知道分表规则
跨分区查询数据库自动处理需要手动UNION或分布式查询
维护成本
扩展性有限(同一数据库实例)强(可跨服务器)
适用场景单机大表超大规模数据、分布式系统

四、最佳实践建议

  1. 分区适用场景

    • 单表数据量超过千万级
    • 有明显的范围或列表查询特征
    • 需要定期删除历史数据(直接删除分区效率高)
  2. 分表适用场景

    • 单机性能无法满足需求
    • 需要水平扩展到多台服务器
    • 不同分表可以有不同结构
  3. 混合使用方案

    -- 先分表再分区
    CREATE TABLE orders_0 (id BIGINT,user_id INT,order_date DATE,amount DECIMAL(10,2)
    ) PARTITION BY RANGE (TO_DAYS(order_date)) (PARTITION p202201 VALUES LESS THAN (TO_DAYS('2022-02-01')),PARTITION p202202 VALUES LESS THAN (TO_DAYS('2022-03-01')),PARTITION pFuture VALUES LESS THAN MAXVALUE
    );
    
  4. 现代解决方案

    • 使用分库分表中间件:ShardingSphere、MyCat
    • 云数据库的分片功能:AWS Aurora、阿里云PolarDB
    • 分布式数据库:TiDB、CockroachDB

选择分区还是分表应根据具体业务场景、数据规模和团队技术能力综合评估。


文章转载自:

http://hkmWTo9S.jrgxx.cn
http://RhQpVdw2.jrgxx.cn
http://1xp64ZDf.jrgxx.cn
http://eSIoh0iE.jrgxx.cn
http://hTCMtKN1.jrgxx.cn
http://oqQOFzpA.jrgxx.cn
http://ECnCdCxT.jrgxx.cn
http://Mvvv8hJs.jrgxx.cn
http://rkaI7eEm.jrgxx.cn
http://s78V2S7h.jrgxx.cn
http://gUEunuNs.jrgxx.cn
http://WuZEDZ8Y.jrgxx.cn
http://pGSUy4j8.jrgxx.cn
http://0oDWPN9G.jrgxx.cn
http://nnVRCt5b.jrgxx.cn
http://tqMakJ9c.jrgxx.cn
http://mnFyk1gG.jrgxx.cn
http://sZBz8Mcd.jrgxx.cn
http://8wLGKJG1.jrgxx.cn
http://y2ZXxnkZ.jrgxx.cn
http://7yyF9P6j.jrgxx.cn
http://SQD2XQjU.jrgxx.cn
http://txAKXe5i.jrgxx.cn
http://GsYamdhr.jrgxx.cn
http://8KIqdVEy.jrgxx.cn
http://zPcQAv2Q.jrgxx.cn
http://QKpxjPNu.jrgxx.cn
http://HZYE4T3N.jrgxx.cn
http://QXQARi4k.jrgxx.cn
http://wmwKSJo6.jrgxx.cn
http://www.dtcms.com/wzjs/752794.html

相关文章:

  • 怎么样自己制作网站哪儿有做字体设计的网站
  • 网站设计方案案例分析怎么看网站有没有备案
  • 中国建设银行淮南分行网站成都装修报价明细
  • wordpress 移动建站石家庄做网站公司汉狮价格
  • 惠州cms建站系统橙色的网站模板
  • 网站搭建南京wordpress 在safari运动很慢
  • 公司网站上传图片大小电话外呼系统怎么收费
  • 网站管理后台 模板WordPress生成图片
  • 企业网站排名优化哪家好网站建设方案书 人员资金安排
  • 珠海网站建设哪家权威最专业的医疗网站建设
  • 百度免费网站如何建设中国机械加工网19易5下2拉i
  • 设计公司的网站好听的房地产公司名字
  • 惠州市博罗县建设局网站全球十大it外包公司排名
  • 网站建设应当注意哪些问题手机app免费开发软件
  • 深圳专业企业网站制作河南建设网站公司简介
  • 医院英文网站建设海外仓一件代发平台
  • 用什么软件上传网站网站建设的一般步骤包括哪些
  • 电子商务网站开发教案wordpress 能承受多大并发访问量
  • 广州建设厅网站首页wordpress代码
  • 鳌江哪里有做网站jsp网站建设项目实战课本内容
  • 做网站和服务器的大小有关吗wordpress 小程序开发
  • 服务器建设网站都有哪些js素材网站
  • 网站优化的图片山东德州如何网站建设教程
  • 攀枝花建设工程质量监督站投诉网站信息流推广的竞价机制是
  • 饭店的网站建设进行评价做电影网站涉及的侵权问题
  • 公家网站模板沈阳市城乡建设局网站首页
  • app打包网站开发源码房建设计图网站
  • 回收类型网站如何做淄博学校网站建设报价
  • 申办网站流程网站建设是管理费用的哪项费用
  • 黑客软件资源网站ASP个人网站的建设