PHPackages                             rice/lavavel-sharding - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. rice/lavavel-sharding

ActiveLibrary[Database &amp; ORM](/categories/database)

rice/lavavel-sharding
=====================

lavavel sharding

v0.0.2(10mo ago)217Apache-2.0PHPPHP &gt;=7.4CI passing

Since Mar 24Pushed 5mo agoCompare

[ Source](https://github.com/rice-code/laravel-sharding)[ Packagist](https://packagist.org/packages/rice/lavavel-sharding)[ RSS](/packages/rice-lavavel-sharding/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (4)Versions (3)Used By (0)

laravel-sharding
================

[](#laravel-sharding)

Laravel 分表工具包 (Laravel Sharding Toolkit)

开箱即用的分表组件包，不用侵入业务代码直接使用。提供多种分片算法，满足不同业务场景的分表需求。

注意事项
----

[](#注意事项)

> 小成本方案，为中小型企业进行赋能，企业有钱的话可以使用成熟的 `TiDB`, `Apache Doris` 等方案，避免 出现性能问题。本库使用 union all + 子查询的方式进行查询，避免大数据量查询(临时表大数据量性能很差)

> 该包还没在生产环境经受考验，要使用时可以现在测试环境跑一下，避免出现问题

功能特性
----

[](#功能特性)

- 支持 `Model` 级别的 `insert`, `save`, `update`, `delete` 调用
- 支持 `order by`, `group by` 调用
- 支持 `Model` 级别的数据分表查询
- 多种分表算法支持
- 解决 MySQL distinct 语法在分表统计不准确问题
- 完善的测试用例

实现原理
----

[](#实现原理)

1. `Illuminate\Database\Eloquent\Model` -&gt; `Rice\LSharding\Sharding` 继承 `Model` 类
2. 重写 `__construct`, `__set`, `getTable`, `forwardCallTo`, `newEloquentBuilder` 方法
3. 继承 `Rice\LSharding\Sharding` 实现对应的分表类和算法

分片算法使用教程
--------

[](#分片算法使用教程)

### 1. 时间分片 (DatetimeSharding)

[](#1-时间分片-datetimesharding)

**说明**：根据时间范围进行分表，适用于按时间增长的数据，如日志、订单等。

**使用示例**：

```
