Archive for the Category » MySQL / DB «

小组功能发布测试,数据库架构调整完成

最近一个月,在cc、panda、javia等人的努力下,bengxin.com的小组功能基本完成,昨晚和cc熬到天亮顺利上线发布测试,大家都很辛苦,为我们的团队感到骄傲,欢迎朋友们继续帮忙测试和提意见!

在此之前的几天,我也完成了全站数据库结构的改造,让各个模块更加独立可靠,对网站未来的发展更加有利,顺便加入了短信报警监测服务,后续会不断地把各种服务的监控短信报警加入进去。

下阶段,我们将在商户、手机、个性化、娱乐性方面增加更多元素进来,期待大家更多的支持和关注!

MySQL Live Webinar for Asia PacificToday!

因为看男子体操决赛迟到了,快两点才加入,自动下载了个客户端进入, 可能时间太短了,收获不多,第一次受邀参加,感觉有些新奇,结束后就再也进不去了,忘记截屏和保存聊天记录了。

Date: Tuesday August 12, 2008

Time: 2:00 pm JPT, at 3:00 pm in Sydney, at 1:00 pm in Singapore, Beijing
and Manila Philippine, at 2:00 pm in Seoul, at 10:30 am in Mumbai

Event Number: 599 944 231

Event Address for Attendees:
https://mysqlinc.webex.com/mysqlinc/onstage/g.php?t=a&d=599944231

Join us for this informative webinar which will deliver a comprehensive
introduction of MySQL products and services such as MyQL Enterprise, MySQL
Cluster, MySQL Embedded, consulting service, along with examples of how
MySQL is used in an organization and what enterprise has chosen MySQL. Are
you considering to use MySQL or wondering what you can do with MySQL? Then
this is a good start to learn about MySQL and what benefits MySQL offers.
This webinar will help you find a solution which matches requirements of
your system.

Kajiyama Ryusuke, MySQL Senior Technical Evangelist

Category: MySQL / DB  Tags:  3 Comments

MySQL数据库运用技巧和优化(不断更新)

一个LAMP架构的网站,经常说这慢那慢的,其实从架构到代码到数据库,优化的空间是非常非常多的(架构设计参照我另外一篇文章),就看你是否愿意花心思去一点一点儿的做起,比如mysql,在lamp网站的架构优化中,往往是很多人最容易忽略的环节,却往往成为优化空间最大的环节,一句不经意的sql语句,可能就会导致数据库执行时间过长,进而导致锁表时间过长,最后导致整站垮掉,让另外99%的努力工作和优化都失去意义,所以,Mysql的优化,需要细致而有耐心的进行,一点一点儿的挖,从slow_query日志开始,从my.cnf参数配置开始,从sql语句写法开始,从表中的索引index开始。。。

即日起,不断整理和MySQL的运用技巧与优化的内容,下面先想到一些是一些。

【索引】

  1. 一般来说,如果选择性超过 20% 那么全表扫描比使用索引性能更优,Oracle在选择性超过25%时会选择全表扫描。
  2. 组合索引比单一索引更有效,但是需要合理使用,清楚你在干什么,组合索引采用B树类型,左前缀的特性,创建组合索引的时候,要考虑到具体的使用场景和逻辑。
  3. 在需要创建索引的字段上,不能设置默认值为NULL,或者也不能插入NULL值,否则索引没有意义。(好像5.1后部分类型的表可以支持NULL的索引)
  4. 不是索引越多越好,过多索引容易导致更新和插入数据效率大大降低。
  5. 要理解最基本的索引概念,只有在where和join用到的字段上创建索引才有价值,另外Max()和Min()函数用到的字段也需要
  6. Where条件里面,有些情况下也是用不到索引的,比如<>, NOT IN, LIKE语句以 %_开头的时候,这时,可以用 id>m or id,用 NOT EXISTS代替NOT IN,可以用到索引的WHERE条件有:< ,<=,=,>,>=,BETWEEN,IN,不以%_开头的LIKE。
  7. 对于CHAR和VARCHAR字段,只用字段的一部分就可创建索引。创建索引时,使用col_name(length)语法,因为多数字段的前10个字符通常不同,所以此索引不会比使用字段的全名创建的索引速度慢很多。另外,使用字段的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高INSERT操作的速度。尤其一些md5()后结果的字段比较适用。

【SQL】

  1. 经常用EXPLAIN来检查你的SQL查询语句,找出那些想当然却事与愿违的隐藏问题。
  2. 常常检查slow query的日志,针对性的深挖慢嚼,改善你的系统性能

【架构和配置】

  1. 主辅库同步,通过搭建Master-slave的架构,可以把系统的读写分离,一方面提高了系统因为数据库单点导致的锁表代理的性能瓶颈,还能使系统的架构更加灵活,可以在某一台slave机器上进行数据统计分析,也可以在某一个slave上进行定时的cron任务或者daemon程序操作,从大型网站使用mysql来说,replication是必须的架构。
  2. memory 类型表

【新特性】

  1. 适当的使用触发器,对于web应用来说,可以在很多地方降低代码的复杂度,提高业务逻辑的可靠性,从我的经验来看,可以在大型应用中适当的使用触发器,比如删除一条评论,用户user表里面的评论数字段自动减1这样的操作就可以通过触发器来完成。

【附录】
more »

Category: MySQL / DB  15 Comments

PHP连接MySQL的字符集问题新发现

  之前我在一篇文章里面讲到把故人居网站升级为UTF8字符集,看过的也知道一些有关PHP和MySQL字符集的问题,通常情况下MySQL默认使用的字符集是latin1,如果我们的系统要使用utf8或者别的字符集,就需要对MySQL进行配置,并且在PHP程序中做一点处理,大致的方法如下:

1.修改my.ini (或者my.cnf)文件,在文件的[mysqld]中加入下面一行
character_set_server = utf8
more »

jsp连接数据库大全 [转自51jsp.net]

有段时间应公司产品开发需要开始研究jsp的东西,虽然本人对JAVA系列的东西都比较不感冒,但是公司行为就是这样,这也是很多有梦想的程序员因此而葬送美好愿望的原因。。。
为了交差,也赶鸭子上架搞了几个月的jsp的东西,中间在网上看到下面这片文章,感觉不错,留做技术资料,现在翻出来跟大家分享。

more »