首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mysql笔记

mysql笔记

作者头像
用户2337871
发布2019-07-19 15:56:18
发布2019-07-19 15:56:18
3890
举报
文章被收录于专栏:gitgit

读写分离,主从,master-slave

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

django配置如下

代码语言:javascript
复制
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操作

代码语言:javascript
复制
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 慢查询日志

代码语言:javascript
复制
# 慢查询日志存放路径
log slow queries = /data/mysqldata/slowquery.log

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

mysql explain语句

代码语言:javascript
复制
explain select * from s_books;
代码语言:javascript
复制
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
| 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)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 读写分离,主从,master-slave
  • mysql binlog的作用
  • mysql 慢查询日志
  • mysql explain语句
  • 不能漫无目的的建索引(create index)
  • django程序如何进行优化
  • 几个链接
  • mysql建索引
  • mysql复合索引,针对多个字段一起建索引
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档