`
willko
  • 浏览: 386734 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

High Performance MySQL 笔录(schema/index 部分)

阅读更多
主要记录阅读High Performance MySQL后新发现的知识点。

1.uuid用binary保存
建议uuid不要使用char来保存,而用binary(16)来保存。这里在长度上来讲用binary会节省一半。因为一个字符占用1个字节,而一个字节实际上可以表示0-256(2^8),用16进制的表示需要2个字节00-FF(0-256)。
优化前:SET uuid = UUID() (类型:char(36))
优化后:SET uuid = HEX(REPLACE(UUID(), '-', '')) (类型:binary(16))

2.用crc32替换长字符串的查找
如果索引列是个很长的字符串,例如url。那可以再建立一个列用来保存这个列的crc32结果,以提高索引的使用速度。
优化前:WHERE url = 'http://willko.iteye.com/' (索引:url,类型:var/char(?))
优化后:WHERE url_crc32 = CRC32('http://willko.iteye.com/') AND url = 'http://willko.iteye.com/' (索引:url_crc32,类型:unsigned int)

3.前缀索引和后缀索引
前缀索引听得比较多,优点是减少索引的长度,缺点是排序不能使用前缀索引(影响distinct/order/group),也不会出现Covering Index(只读取索引就能满足查询)。
后缀索引还是首次听到,孤陋寡闻了。因为MySQL不支持反向索引,所有有时候查询会有问题,例如字段blog保存用户的博客地址(http://willko.iteye.com),那需要查询某个域名有多少个用户就不好查询,可以用一个额外的字段反转保存。blog_reverse:moc.eyeavaj.willko://ptth,这样就很容易查到iteye.com(moc.eyeavaj)有多少用户了,并可以使用索引,也就是解决了 LIKE '%?'的问题,因为查询反转成LIKE '?%'了。

4.散列数据
散列数据就是把原本只有一条记录的散列成多条,充分利用InnoDB行锁的特性,提高并发。
例如,之前是UPDATE hit_counter SET cnt = cnt + 1 WHERE id = ?
散列后是 UPDATE hit_counter SET cnt = cnt + 1 WHERE id = ? AND slot = rand() * 100
散列后查询需要合并数据。

5.优化limit和offset
MySQL的limit工作原理就是先读取n条记录,然后抛弃前n条,读m条想要的,所以n越大,性能会越差。
优化前SQL: SELECT * FROM member ORDER BY last_active LIMIT 50,5
优化后SQL: SELECT * FROM member INNER JOIN (SELECT member_id FROM member ORDER BY last_active LIMIT 50, 5) USING (member_id)
分别在于,优化前的SQL需要更多I/O浪费,因为先读索引,再读数据,然后抛弃无需的行。而优化后的SQL(子查询那条)只读索引(Cover index)就可以了,然后通过member_id读取需要的列。
3
2
分享到:
评论
1 楼 cc0cc 2010-05-27  
哥,速来http://www.blog-brother.com右上角社区报道,这期推广中有哥的文章。

相关推荐

    解决dubbo启动的时候报错,无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'

    解决启动dubbo项目的时候出现,无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd',其实在你本地把dubbo.jar文件解压,然后在META-INF下边就有个dubbo.xsd,就是他

    dubbo.xsd文件

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <xsd:schema ... xmlns:beans=... <xsd:import namespace="http://www.springframework.org/schema/tool"/>

    spring_MVC源码

    05. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 06. ...

    Go-mysql-schema-sync是一款使用Go开发跨平台的MySQL表结构自动同步工具

    《Go-mysql-schema-sync:MySQL表结构同步利器》 在当今信息化时代,数据库作为数据存储的核心,其表结构的同步问题至关重要。尤其是在多环境(如开发、测试、生产)之间,确保数据库结构的一致性是保障系统稳定...

    MySQL 5.6中备份及还原performance_schema配置

    总的来说,`performance_schema`是MySQL 5.6中的一个强大工具,它的备份和恢复策略是系统管理的重要组成部分。通过定期备份配置,你可以确保在面临问题时能迅速恢复到已知的稳定状态,并利用备份的数据进行性能调优...

    mysql-schema-ts::sparkles:将mysql模式转换为TypeScript接口

    mysql-schema-ts 将MySQL模式转换为TypeScript接口 Postgres实施: : 用法 # to infer an entire schema $ npx mysql-schema-ts mysql://root@localhost:3306/database # to infer a specific table $ npx mysql-...

    解决dubbo标签报错,原因是:缺少dubbo.xsd

    下载一个dubbo.xsd文件windows->preferrence->xml->xmlcatalog add->catalog entry ->file system 选择刚刚下载的文件路径 修改key值和配置文件的http://code.alibabatech.com/schema/dubbo/dubbo.xsd 相同 保存即可...

    Go-基于mysql-schema-sync开发的同步数据的工具.

    本文将深入探讨基于Go语言开发的、利用`mysql-schema-sync`库实现的数据库数据同步工具。这个工具专为从一个数据库(db)同步表数据到另一个数据库设计,对于需要跨环境、跨实例数据迁移或备份的场景尤为实用。 ...

    struts hibernate spring 集成时使用依赖注解的方式的秘籍

    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans ...

    出现错误mysql Table 'performance_schema...解决办法

    在MySQL数据库系统中,`performance_schema`是一个特殊的存储引擎,自MySQL 5.5版本引入,用于收集和分析服务器的性能数据。这个存储引擎提供了一种方式来跟踪和监控MySQL服务器的各种资源使用情况,如查询执行时间...

    dubbo.xsd 约束文件 解决标签识别报红

    - schema_reference.4: Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root ...

    spring-ibatis

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context=...

    Spring实战2-Bean注入详解的源代码

    xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context=...

    dubbo找不到dubbo.xsd报错

    - schema_reference.4: Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root ...

    springmvc-config.xml

    这是一个springmvc-config.xml文件,<?xml version="1.0" encoding="UTF-8"?> ... xmlns:mvc=... http://www.springframework.org/schema/context/spring-context-4.2.xsd">

    springjdbc

    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd ...

    项目源码java京东商城购物网站

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop=...

    sping配置数据源

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context=...

    MySQL的performance-schema详解.md

    MySQL的performance_schema详解.md

    Spring4.0+Hibernate4.0+Struts2.3整合案例

    xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx=...

Global site tag (gtag.js) - Google Analytics