《高性能 MySQL》读书笔记(二)

本文是《高性能 MySQL》第四章的读书笔记。

数据类型

选择正确的数据类型对于获得高性能至关重要,几个原则:

更小的通常更好:尽量选择能正确存储数据的最小数据类型。
简单就好:简单数据类型的操作通常需要更小的数据周期。例如,整型优于字符串,使用整型而非字符串来存储 ip。
尽量避免 NULL:NULL 使得索引、索引统计、值比较都比较复杂;需要更多的存储空间;需要特殊处理。

阅读全文

《高性能 MySQL》读书笔记(一)

这个系列的读书笔记是码农翻身的刘老师组织的读书活动,入群费 100 元,分阶段读完整本书,每阶段输出读书笔记,读完后退费。本文为本书第一章的笔记。

MySQL 的灵活性体现在很多方面,但其中最与众不同的特性是它的存储引擎架构:将查询处理以及其他系统任务和数据的存储/提取相分离。这种设计使得我们可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。

阅读全文

深度解密Go语言之 pprof

相信很多人都听过“雷神 3”关于性能优化的故事。在一个 3D 游戏引擎的源码里,John Carmack 将 1/sqrt(x) 这个函数的执行效率优化到了极致。

一般我们使用二分法,或者牛顿迭代法计算一个浮点数的平方根。但在这个函数里,作者使用了一个“魔数”,根本没有迭代,两步就直接算出了平方根。令人叹为观止!

阅读全文

Golang error 的突围

写过 C 的同学知道,C 语言中常常返回整数错误码(errno)来表示函数处理出错,通常用 -1 来表示错误,用 0 表示正确。

而在 Go 中,我们使用 error 类型来表示错误,不过它不再是一个整数类型,是一个接口类型:

阅读全文

深度解密调度器源码系列

上篇文章从全局视角讲了 Go 的调度器,其实在这个过程中,我还阅读了 Go 的源码,并作了详细的讲解。

整个系列共 10 篇文章,深度解析调度器的源码。

源码阅读系列

阅读全文

深度解密Go语言之scheduler

好久不见,你还好吗?距离上一篇文章已经过去了一个多月了,迟迟未更新文章,我也很着急啊。

跟大家汇报一下,这段时间我在看 proc.go 的源码,其实就是调度器的源码。代码有几千行之多,不像以往的 map,channel 等等。想把这些代码都看明白,是一个庞大的工程。到今天为止,我也不敢说我都看明白了。

阅读全文

| | | 144.8k