Dev's Logging

Welcome to my blog !


Advanced usage of prefetch_related and select_related in Django

Published at March 29, 2019 ·  1 min read

django orm 的优化策略,在存在外键且需要多级嵌套查询的情况下,使用 prefetch_related(‘first_model__second_model’) 的方式将多次查询集合成一次查询 Advanced usage of prefetch_related and select_related in Django...

What is the difference between @staticmethod and @classmethod?

Published at March 29, 2019 ·  1 min read

staticmethod 和 classmethod 的用途及区别。staticmethod 更多的是将与 class 相关的 method 与其相绑定,防止污染整个模块的 namespace,同时也方便继承的类进行方法的重写。 classmethod 则需要显式的将 cls 作为第一个参数传进去。 What is the difference between @staticmethod and @classmethod?...

Django orm optimization cheat sheet

Published at March 29, 2019 ·  1 min read

django orm 常见的优化措施,除了 count 和 exists 外,select_related prefetch_related 也很常用,其他的则是考虑 queryset 在哪些场景下是 cached 哪些不是,以节省内存及减少数据库查询。 Django orm optimization cheat sheet...

Five sharding data models and which is right

Published at March 28, 2019 ·  1 min read

五种不同的 sharding 方式,分别是: 1. sharding by customer or tenant, 方便SaaS 及 ERP 2. sharding by geography, 方便多地域的服务。3. sharding by entity id,最常见的一种方式。 4. sharding a graph, 在Facebook Instagram 这种社交网站中较为流行,采用 图数据库。5. time partitioning, 适合于时间序列的数据,常见于各种日志。 Five sharding data models and which is right...

Database sharding explained in plain English

Published at March 28, 2019 ·  1 min read

postgresql 集群管理工具 citus 背后 sharding 的技术方案。把 id 均匀的哈希到 -2^32 - 2^32 之间的值,若增加 node 则将原有的 shards 进行移动到新的节点以实现轻松扩容。 Database sharding explained in plain English...

3 ways to detect slow queries in PostgreSQL - Cybertec

Published at March 28, 2019 ·  1 min read

几种检测 postgresql 慢查询的方法,针对全库,需要开启慢查询的日志打印,另外配合 explain 确认查询的方式,是索引还是顺序查询等。最后一个则是利用 pg_stat_statements 查看查询的数量、时间等状态信息。 3 ways to detect slow queries in PostgreSQL - Cybertec...

Tags

abcs accept acid activemq affinity algorithm allocation android array async aws b+tree b-tree backoff benchmark best-practices bfs big-o bigquery bind bitcount blog break broker bubble buffer cache cap cert cgroups channel citus class classmethod closure closures cluster concurrency config consumer container context cookie cors crawler cronjob csrf ctr data-science data-structure database datadog dataflow datascience decorator defer dfs distributed django dns docker double-shipping drf ecosia elastic-search enumerate epoll errgroup escaping extra fabric2 facebook-pixel financial-report flask flutter forward-proxy freelance frontend frp garbage-collector gc gcp generator gesture get gil git golang goroutine graphql ha handbook haproxy hash hash-slot hashring hashtable hpa http http-auth http-proxy http_proxy https index init innodb instagram intergration interview ios javascript jinja2 jobboard jwt k8s kafka kibana kqueue label lambda layer4 layer7 lean levels.io linked-list linux list listen loadbalancer logs long-tail lru marketing master matplotlib memory merge metaclass metaprogramming metrics metrics-server microservices mitm mobile model mq myisam mysql namespace nat netflix network-extension nginx nodejs nomad nosql npm oodesign openssl optimization orm pandas parallelism paramiko parkinglot patroni permission pg pipeline pixelme post postgresql postresql prefetch_related prerender private-key process proxy proxycommand put pvm python queue rabbitmq rbac react-native reactive reactjs rebase redis redis-cluster replication resource rest restfulapi retargeting retry revenue reverse-proxy rocketmq rsa rxswift saas scaffold scaleable search-engine security select seo serverless service session set shadosocks shadowsocks shard sharding shell shopify sigint signal sigterm slack slave slow-query sniper sns socket socks5 source-code spa sql sqlalchemy sqs ssh ssl ssl-pinning stack startup state stateful stateless staticmethod string struct swift swiftui switch syscall system-design systemctl tcp tcp-proxy thread tmpreaper token traefik trustkit tunning type typeform udp userdefaults variable vc vpn vuejs weak web web-development where widget yarn zset 削峰 宽索引 异步 看源码学-golang 窄索引 解耦 跨域 跳板机


Archives

2019 (156)