存档

文章标签 ‘MYSQL’

Daniel-Journey Weekly Dose- 2011/7/31

2011年7月31日 admin 没有评论

数据库

MySQL新技术探索与实践

架构和设计

@淘宝聂风:团队大了,很多的工程师一起工作,就会导致代码混乱,难以维护的情况,这样的感觉说是说不出来的,需要规范和协议,制定好规则,该分离就分离,该重构就重构!

@JavaCoding:业务代码混乱是很正常的, 但是, 基础代码一定要精益求精!

操作系统

关于IO的同步,异步,阻塞,非阻塞

Java

Java NIO 选择器(Selector) 知识预备 (linux poll)

项目管理

『Agile Project Management』软件项目成功的十大关键因素:用户参与;高级管理者的支持;清晰的业务目标;优化的范围;敏捷过程;项目管理专家;财务管理;拥有熟练技能的人力资源;正规的方法学;优秀的工具和基础设施。

网络营销

企业电子邮件营销五要素

64945e3djw1djdpgjy5yzj

投资

买进靠耐心,卖出靠决心——巴菲特

美国有位基金经理久仰巴菲特大名,专门去拜访巴菲特。可是在他和巴菲特详细交谈后失望地说,巴菲特只不过是一个“业务投资者”。他的意思是说,巴菲特的主要精力并没有集中在股市上,而是在股市外。

盈利能力最强的公司,往往是那些5年来甚至10年来经营方式一直没有改变的企业。由于经营方式一直不变,企业管理层才有机会不断改善服务,改进产品线,不断提高生产技术。相反,如果公司经验总是发生重大变化,就很有可能会随之经常出现重大失误。

投资和投机是两个经济概念,很不容易分辨,却又迥然不同。这主要看亮点:一是投资行为看重长期的稳定回报,而投机行为着眼于短期内技术性套利;二是投资行为追求双赢的发展途径,而投机行为只能增加未来经济的不确定性。

Daniel-Journey Weekly Dose-2010/5/8

2010年5月9日 admin 没有评论
分类: 阅读 标签: , , , , ,

《How FriendFeed uses MySQL to store schema-less data》阅读笔记

2009年6月29日 admin 没有评论

How FriendFeed uses MySQL to store schema-less data 这篇文章发布已经有一段时间了,之前也读过没留下什么映像,最近又重读了一遍做了一些笔记,内容如下。

  • 数据库查询需要得到索引的支持,索引在加速查询的同时,也会直接影响了数据插入、更新的速度。另外,由于FriendFeed的数据量比较大,维护索引而引起的相关表的锁表时间会比较长。
  • FriendFeed使用了读写分离技术和memcache来提升数据读取吞吐量
  • FriendFeed使用了Sharding技术来提升数据写入吞吐量
  • 由于Sharding技术的使用,有些很基础的关系运算就不能被支持了,例如Join。这样Mysql退化成了一个键值(KeyValue)数据库。
  • 键值数据库很多。FriendFeed没有使用专门的键值数据库可能考虑多种原因
  • 存储表的物理主键是autoincremen,而逻辑上的主键使用的是uuid。之所以这样做是因为uuid的不重复性对数据分布有好处,但因为InnoDB表类型会按照主键排序,此时如果使用类似uuid这样的无序串作为主键的话,那么当插入新行的时候,新行在数据文件中的位置是不确定的,这就会带来一个沉重的IO负担,而如果采用自增字段作为主键的话就不存在这个问题,因为新行始终位于数据文件的结尾。

 

关于FriendFeed如何保存schema-less数据的细节,这里就不在描述了,大家可以参考How FriendFeed uses MySQL to store schema-less data 或是老王解读FriendFeed对MySQL的使用

 

参考资料

How FriendFeed uses MySQL to store schema-less data 原文

解读FriendFeed对MySQL的使用

分类: MYSQL 标签: , ,

mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用

2009年6月25日 admin 没有评论

mysql的“慢查询”指的是超过了允许的最大查询时间(long_query_time)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句。

慢查询配置和使用

在msyqld的启动配置文件或命令行参数中增加以下参数

long_query_time=1

log-slow-queries=/var/mysql/logs/slow.log

long_query_time参数表示的是慢查询的度量时间,单位是秒,最小是1,缺省值是10,凡是执行时间超过long_query_time的sql语句都会记录到慢查询日志中。

--log-slow-queries[=file_name]的file_name参数可选,缺省值是host_name-slow.log,如果指定了file_name参数的话,mysql就会把慢查询的日志记录到file_name所设定的文件中,如果file_name提供的是一个相对路径,mysql会把日志记录到mysql的data目录中。

未使用索引查询配置和使用

在mysql的启动配置文件或命令行参数中增加--log-queries-not-using-indexes 参数就可以启用未使用索引查询语句了,日志记录的文件就是log-slow-queries对应的文件。

//mysql.conf

log-queries-not-using-indexes

使用案例

mysql的配置如下

[mysqld]

#Slow Query log
long_query_time=3

log-slow-queries

# Log queries that is not using indexes
log-queries-not-using-indexes

执行以下命令

select sleep(1);

select sleep(3);

select * from t1;

日志内容如下

D:\MySQL\MySQL Server 5.1\bin\mysqld, Version: 5.1.31-community-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
# Time: 090625 12:58:09
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.000077  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1245905889;
select sleep(3);
# Time: 090625 12:58:42
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 0.046876  Lock_time: 0.031251 Rows_sent: 0  Rows_examined: 0
SET timestamp=1245905922;
select * from t1;

其他

除此之外还有一些专门的慢查询日志分析、查询工具,大家可以google以下相关的内容。

相关资料

mysql参考手册#Slow Query Log

MySQL 优化之 Slow Query Log

分类: MYSQL 标签: ,

购买新书《MySQL性能调优与架构设计》

2009年6月20日 admin 没有评论

在之前的2-3年从事的开发工作中都使用到了MySQL数据库,对MySQL的关注和学习也越来阅读。不过在之前主要的学习内容还是基于Mysql做一些开发,很少涉及Mysql的性能调优与架构设计。随着工作环境和重心的改变,以后会多一点时间学习Mysql的性能调优与架构设计相关的内容。最近有一本《MySQL性能调优与架构设计》刚刚上市,马上买了一本。这本书的作者是阿里巴巴的简朝阳,阿里巴巴有不少优秀的架构师和DBA,希望以后能够读到他们更多的著作。

分类: MYSQL 标签: ,