mysql
文章平均质量分 57
bingjing12345
知行合一
展开
-
高性能Mysql笔记 (2)(3)
基准测试也就是生物里面学的对照试验, 基准测试的具体做法是: 1)在系统上运行一系列测试程序并把性能计数器的结果保存起来。 2)这些结果可以建立一个已知的性能水平,将这个性能水平称为基准线。 3)仅改变其中一个条件,其他所有条件保持不变,再执行一次,并保存结果 4)对比两次试验结果,看改变条件对结果的影响。如何确认服务器是否达到了性能最佳状态找出某条语句为什么执行不够快诊断看不到的地方都是原创 2017-06-06 14:09:01 · 283 阅读 · 0 评论 -
高性能Mysql笔记 (4) --库表结构优化
选择正确的数据类型为标识列(如userID)选择合适的数据类型非常重要。1使用内置类型而非字符串存储日期和时间 2使用整形存储ip地址 (INET_ATON) 3除非真的需要存储NULL值(如稀疏表),否则指定列为NOT NULL 可使用 0 “” 等特殊字符代替NULL4对于存储和计算 INT(1) 和 INT(20)是相同的,这种指定只是规定了MYSQL和一些交互工具用来显示字符的个数。因原创 2017-06-06 14:18:03 · 1004 阅读 · 0 评论 -
高性能Mysql笔记 (5)---索引优化
索引的类型 btree索引 最左匹配,匹配范围值, 不能跳列。 hash索引索引的优点: 1 大大减少服务器需要扫描的数据量 2 帮助服务器避免排序和临时表 3 将随机IO变为顺序IO顺序io/ 随机io: 如果索引不能覆盖查询所需的全部列,那就要回表查询,这些查询都是随机IO。因此按照索引顺序读取数据的速度要比顺序全表扫描慢。索引三星: 索引将相关的记录放在一起则获得一星 索引中的原创 2017-06-06 14:24:03 · 520 阅读 · 0 评论 -
高性能Mysql笔记 (6)---查询优化
为什么查询会慢是否向db请求了不需要的数据 需要10行但查询了100行 | 多表关联返回全部列 | 每次都是取出所有列db是否扫描了额外的行【推荐】SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是consts最好。 说明: 1)consts 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。 2)ref 指的是使用普通的索引。(no原创 2017-06-06 14:27:49 · 3411 阅读 · 0 评论 -
高性能Mysql笔记 (7)---查询缓存
如果表发生变化,和这个表相关的所有缓存数据都将失效。1)使用hash(sql语句和客户端的一些原始信息) 的方式 判断是否命中。 因此sql语句即使多一个空格,也会造成缓存不命中。 2)查询缓存占用太大的内存或者碎片太多时,失效这些缓存可能会成为瓶颈。缓存如何管理内存query_cache_size : 分配内存的总大小 query_cache_min_res_unit : 申请块的最小值 (简原创 2017-06-06 14:36:13 · 387 阅读 · 0 评论 -
mybatis、 jdbc、 mysql-connector 之间的关系
先明确 jdbc 和 mysql-connector http://www.cnblogs.com/jianshu/p/6023098.htmlJDBC(Java Database Connectivity)是一组接口, JDBC的目标是使Java程序员 使用这组接口连接任意的数据库系统。mysql-connector-java 是 jdbc 的一个实现 ,用它可以连接mysql系统。如果我当前原创 2017-06-08 11:55:32 · 3937 阅读 · 0 评论 -
高性能Mysql 笔记 (1)
应用和mysql的连接 是长连接还是短连接?大部分是长连接,并且现在应用很少直连mysql而都是通过开源数据库连接池,比如c3p0mysql服务端使用 典型的 “线程池” 实现伪异步IO。 mysql server监听进程,监听到新的请求,然后mysql为其分配一个新的 thread,去处理此请求。MySQL为什么使用线程的模型而不是epoll之类的技术? mysql的瓶颈一般是原创 2017-06-06 14:07:25 · 404 阅读 · 0 评论