mysql笔记

Django读写分离与MySQL优化

读写分离,主从,master-slave

  • master机器只用来写入
  • slave机器只能用来读取
  • 读写分离的问题:数据同步的问题,master机器会把新写入数据的同步到slave机器上,毫秒级别

django配置如下

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'db2': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db2.sqlite3'),
    },
}

手动进行读写分离的orm操作

def write(request):
    models.Products.objects.using('default').create(prod_name='熊猫公仔', prod_price=12.99)
    return HttpResponse('写入成功')


def read(request):
    obj = models.Products.objects.filter(id=1).using('db2').first()
    return HttpResponse(obj.prod_name)

mysql binlog的作用

  • binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。

mysql 慢查询日志

# 慢查询日志存放路径
log slow queries = /data/mysqldata/slowquery.log

# 多慢才叫慢查询的定义
long_query_time = 2

mysql explain语句

explain select * from s_books;
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | s_books | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    2 |   100.00 | NULL  |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.01 sec)

不能漫无目的的建索引(create index)

  • 因为索引建的多了以后,同样会带来性能问题,因为每多一个索引,都会增加写操作的开销和磁盘空间的开销。

  • 有针对性的建索引,通过explain和查看慢查询日志,来找出性能的瓶颈

django程序如何进行优化

  • 缓存策略,redis
  • 耗时任务异步化,celery
  • 优化orm查询,优化queryset查询
  • 静态资源存到cdn(阿里云图片云存储,七牛云,又拍云)
  • 负载均衡

几个链接

mysql建索引

  • CREATE INDEX indexName ON mytable(username(length));
  • ALTER table tableName ADD INDEX indexName(columnName)

mysql复合索引,针对多个字段一起建索引

  • CREATE INDEX idx_example ON table1 (col1 ASC, col2 DESC, col3 ASC)

转载于:https://my.oschina.net/u/3892643/blog/1919766

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值