Discuz X 多資料庫配置與使用方法

2021-09-26 04:14:11 字數 1292 閱讀 8707

在discuz!x中,是可以方便的使用多資料庫的,可以單獨的配置不同的資料庫連線。作用估計起來有以下兩個好處。

如果負載足夠搞,是可以把很一些表分布在多台資料庫伺服器中。這樣來減小負載

可以方便的使用別的資料庫中的資料。

還可以把帖子分表,分到不同的資料庫伺服器中 將帖子拆分到其他資料庫

在/config/config_global.php 檔案中增加資料表和伺服器之間的對映關係,還有相應資料庫伺服器配置。加入以下**

//2的意思是隨後配置的資料庫連線引數

$_config['db']['map']=array('表名'=>'2');

//這裡面2對應對映配置

$_config['db']['2']['dbhost'] = 'localhost';

$_config['db']['2']['dbuser'] = 'root';

$_config['db']['2']['dbpw'] = '';

$_config['db']['2']['dbcharset'] = 'gbk';

$_config['db']['2']['pconnect'] = '0';

$_config['db']['2']['dbname'] = '資料庫名';

//這個引數其實沒有用,要照我隨後的修改就可以用了

$_config['db']['2']['tablepre'] = 'cdb_';

在程式中使用就很方便了。直接使用db靜態物件

print_r(db::fetch_first("select * from ".db::table('表名')." limit 1"));
一定要使用db::table方法,因為通過這個方法來轉換資料庫連線。

一些聯表查詢不能使用

外聯資料庫的表字首一定得和現在的表字首一樣。如 pre_表名

如果需要使用其它資料庫的非discuz的表,可以修改 class_core 的 table_name 函式,這樣就不用限制 pre_ 表字首了。而且配置中的資料庫字首也可以用了。

function table_name($tablename) 

$this->curlink = $this->link[$id];

//增加了這一句

return $this->config[$id]['tablepre'].$tablename;

} else

return $this->tablepre.$tablename;

}

ActiveRecord 之 多資料庫配置

activerecord 的多資料庫配置基本沿襲了 nhibernate 的思想,只不過在配置檔案結構上作了些調整。1.採用繼承方式,歸納使用同一資料庫的型別。比如 a b c d e 中 a b連線到資料庫test1,c d連線到test2,而e連線到預設的test,那麼具體的 就會是下面這種方式...

ActiveRecord 之多資料庫配置

activerecord 的多資料庫配置基本沿襲了 nhibernate 的思想,只不過在配置檔案結構上作了些調整。1.採用繼承方式,歸納使用同一資料庫的型別。比如 a b c d e 中 a b連線到資料庫test1,c d連線到test2,而e連線到預設的test,那麼具體的 就會是下面這種方式...

Discuz X論壇配置使用多個資料庫

在discuz x中,是可以方便的使用多資料庫的,可以單獨的配置不同的資料庫連線。作用估計起來有以下兩個好處。1.如果負載足夠搞,是可以把很一些表分布在多台資料庫伺服器中。這樣來減小負載 2.可以方便的使用別的資料庫中的資料。3.還可以把帖子分表,分到不同的資料庫伺服器中 將帖子拆分到其他資料庫 在...