使用数据库读写分离可以提高网站的性能,吞吐率。
配置数据库
1 | DATABASES = { |
设置读写分离
手动设置
在使用数据库时,通过.using(db_name)来手动指定要使用的数据库.
1 | from django.shortcuts import HttpResponse |
自动设置
定义router
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 一主一从
class Router(object):
def db_for_read(self, model, **hint):
return 'slave'
def db_for_wirte(self, model, **hints):
return 'default'
# 一主多从
class Router(object):
def db_for_read(self, model, **hint):
import random
return random.choice(['slave1', 'slave2', 'slave3'])
def db_for_wirte(self, model, **hints):
return 'default'settings.py 加入DATABASE_ROUTERS设置
1
DATABASE_ROUTERS = ['myrouter.Router',]