前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql笔记

mysql笔记

作者头像
用户2337871
发布2019-07-19 15:56:18
2910
发布2019-07-19 15:56:18
举报
文章被收录于专栏: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复合索引,针对多个字段一起建索引
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档