# YII sharded ext **Repository Path**: techutter/YII-sharded-ext ## Basic Information - **Project Name**: YII sharded ext - **Description**: YII 分库分表扩展,支持自定义的库表拆分方式,支持主从库配置 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2014-02-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## YII 分库分表扩展 优化数据库连接,减少数据库连接次数及必连主库的限制,优化 实例化AR类、使用 Yii::app()->db->createCommand() 时连接数据库的操作 查询缓存方案,缓存sql中得SHOW语句,减少数据库查询次数 ### 配置 array( 'dbConnectionManager' => require(dirname(__FILE__).'/dbManager.php'), ) /** * 添加: protected/config/dbManager.php * 参考 test/dbManager.php */ /** * 修改具体的 model * 需要删除 tableName 方法 */ class User extends CShardedActiveRecord { protected static $baseTable = 'table_name'; /* * 这里替换掉了YII 原有的参数,改为传入分库分表所依据的值 * 具体的分库分表方法 在 dbManager.php 中配置 */ public static function model($shardedVal = null) { self::setShardedValue($shardedVal); return parent::model(__CLASS__); } ### 使用 findAll(); $data = $model->dbConnection->createCommand() ->select("*") ->from($model->tableName()) ->where('uid>1') ->limit(10) ->queryAll(); $db = Yii::app()->dbConnectionManager->sharded($uid); // 调用sharded方法 设置库和表 $data = $db->createCommand() ->select("*") ->from('user_contact_'.$db->shardedTableKey) ->where('uid>1') ->limit(10) ->queryAll();