大型新闻网站点击量的技术方案咨询

网友提问:

1.问题主题

如何记录用户发表的文章的点击量

2.问题补充描述

当并发非常小的时候可以直接存在这个文章表里面,叫一个click_count,但是如果网站的访问量很高,那这样数据库肯定要累死,各位大牛有什么好的解决办法么?

8.5.3

mysqlops回答:

我们只讨论访问量很高的情况,例如:每天1亿及以上PV的新闻网站,建议做法可以分为2种方式:

1.使用缓存系统,

关于MySQL数据库的数据类型发生隐形转换的问题咨询

网友的问题:

1.MySQL对于int类型索引使用问题,如:tb中有主键id,普通索引tid,在执行SQL:select * from tb where id = 2 order by id 时,
extra为空,这里的id值没带引号,如果带上引号extra也为空。

2.当 select * from tb where tid = 2 order by tid,tid为普通索引,这时tid的值带引号和不带引号就会有区别,带引号时extra会提示额外的排序,不带引号时extra为空,这是怎么一回事?
zhdba

mysqlops的回答:

1.当字段类型为:INT;

Oracle数据库数据导入到MySQL数据库的工具介绍

使用MySQL Migration Toolkit快速将Oracle数据库数据导入MySQL数据库中

 

近来笔者有项目需要将原有的Oracle数据库中的数据导入到MySQL中,经过试用发现MySQL GUI Tools中的MySQL Migration Toolkit可以非常方便快捷的将Oracle数据导到MySQL中,特别是对CLOB、BLOB类型的数据也有非常好的支持。下面笔者来介绍一下MySQL Migration Toolkit的使用,该软件可以在http://dev.mysql.com/downloads/gui-tools/5.0.html处下载到。

 

1、 运行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中选择Oracle Database Server,如果第一次使用会告之要求加载驱动程序ojdbc14.jar。

2014中华数据库与运维安全大会介绍

2014中华数据库与运维安全大会介绍

【导读】

自2009年于上海举办技术会议以来,一直坚持公益性且技术干货为主的特点,在2009年至2011年底之间的三年期间一直是IT168坚持真诚奉献,后因公司被收购等因素不得不放弃华东地区的免费技术活动,自接手技术会议以来,得到很多朋友和企业的支持,使我们华东地区的技术会议得以继续举办,并且一届比一届更好。随着会议规模的扩大,其他地区的(尤其是华南地区和华北地区)会议参与者逐年增加,在2013年11月16日,正式更名会议为中华架构师大会,以及中华数据库与运维安全大会。2014年5月24日,我们将在上海举办2014中华数据库与运维安全大会,精彩内容请勿错过。

会议介绍

2014年05月24日(星期六)07:45至19:00,我们将在上海市虹口区纪念路301号宝丰联大酒店举办一年一度的中华数据库与运维安全大会。届时来自百度、腾讯、阿里巴巴、网易、大众点评、人人网、圆通速递、CNTV、淘宝、支付宝、热璞科技等技术精英们,将以他们的成功实践经验,为我们带来关于数据库、运维自动化、运维安全、互联网金融、架构设计等等的技术分享盛宴。本届会议官方报名网站:http://meeting.zhdba.com/2014dtcc

会议信息

会议时间:2014年05月24日 (1天,上午1个主会场,下午2个分会场,共计14个精彩主题)

MySQL数据库InnoDB存储引擎在线加字段实现原理详解

腾讯互娱内部维护了一个MySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能,这个分支我们内部称为TMySQL。该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下介绍下其实现原理。
1. GCS行格式

需要在innodb中实现类似oracle的快速加字段功能,仅仅基于原来的行格式是不行的,必须对其进行扩展。为了保证原MySQL和innodb的兼容性,不改变原存储格式的行为,在线加字段功能是通过新增一种innodb行格式GCS(Game Cloud Storage)来实现,从而避免对其他格式造成影响。

mysqlops-innodb-one

MySQL数据库的例外处理测试

针对存储过程 、触发器或函数内部语句可能发生的错误或警告信息,需要进行相关异常或称 例外的捕捉,然后作出相应的处理,简单地做了相关的测试,详细信息如下:

 

USE TEST;

CREATE TABLE `eugene` (
`ID` int(11) NOT NULL,
PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;

delimiter $$
DROP PROCEDURE IF EXISTS `test`.`handlerdemo`$$
CREATE PROCEDURE handlerdemo ()
BEGIN
DECLARE X2 INT;
DECLARE CONTINUE HANDLER FOR SQLWARNING       SET X2= 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND             SET X2 = 2;
DECLARE CONTINUE HANDLER FOR SQLSTATE ’23000′    SET X2= 3;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION     SET X2 = 4;

动员令:诚邀MySQL数据库爱好者为翻译MySQL手册而战

动员令:为翻译MySQL手册而战

*:first-child {
margin-top: 0 !important;
}

body>*:last-child {
margin-bottom: 0 !important;
}

/* BLOCKS
=============================================================================*/

p, blockquote, ul, ol, dl, table, pre {
margin: 15px 0;
}

/* HEADERS
=============================================================================*/

h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
}

h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
font-size: inherit;
}

h1 {
font-size: 28px;
color: #000;
}

h2 {
font-size: 24px;
border-bottom: 1px solid #ccc;
color: #000;
}

h3 {
font-size: 18px;
}

h4 {
font-size: 16px;
}

h5 {
font-size: 14px;
}

h6 {
color: #777;
font-size: 14px;
}

body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
margin-top: 0;
padding-top: 0;
}

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top: 0;
padding-top: 0;
}

h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
margin-top: 10px;
}

/* LINKS
=============================================================================*/

a {
color: #4183C4;
text-decoration: none;
}

a:hover {
text-decoration: underline;
}

/* LISTS
=============================================================================*/

ul, ol {
padding-left: 30px;
}

ul li > :first-child,
ol li > :first-child,
ul li ul:first-of-type,
ol li ol:first-of-type,
ul li ol:first-of-type,
ol li ul:first-of-type {
margin-top: 0px;
}

ul ul, ul ol, ol ol, ol ul {
margin-bottom: 0;
}

dl {
padding: 0;
}

dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px;
}

dl dt:first-child {
padding: 0;
}

dl dt>:first-child {
margin-top: 0px;
}

dl dt>:last-child {
margin-bottom: 0px;
}

dl dd {
margin: 0 0 15px;
padding: 0 15px;
}

dl dd>:first-child {
margin-top: 0px;
}

dl dd>:last-child {
margin-bottom: 0px;
}

/* CODE
=============================================================================*/

pre, code, tt {
font-size: 12px;
font-family: Consolas, “Liberation Mono”, Courier, monospace;
}

code, tt {
margin: 0 0px;
padding: 0px 0px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
}

pre>code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}

pre {
background-color: #f8f8f8;
border: 1px solid #ccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}

pre code, pre tt {
background-color: transparent;
border: none;
}

/* QUOTES
=============================================================================*/

blockquote {
border-left: 4px solid #DDD;
padding: 0 15px;
color: #777;
}

blockquote>:first-child {
margin-top: 0px;
}

blockquote>:last-child {
margin-bottom: 0px;
}

/* HORIZONTAL RULES
=============================================================================*/

hr {
clear: both;
margin: 15px 0;
height: 0px;
overflow: hidden;
border: none;
background: transparent;
border-bottom: 4px solid #ddd;
padding: 0;
}

/* TABLES
=============================================================================*/

table th {
font-weight: bold;
}

table th, table td {
border: 1px solid #ccc;
padding: 6px 13px;
}

table tr {
border-top: 1px solid #ccc;
background-color: #fff;
}

table tr:nth-child(2n) {
background-color: #f8f8f8;
}

/* IMAGES
=============================================================================*/

img {
max-width: 100%
}
–> 

动员令:为翻译MySQL手册而战

动员令

您有没有因小小的MySQL支撑互联网80%以上的业务而惊奇?您有没有觉得MySQL是多么神秘而美丽?您有没有为开源贡献一份力量的热心?您有没有意识到翻译一份中文版本的MySQL文档的重要性?帮助更多的人学习和提高,从手册开始。

 

请加入我们!将 MySQL5.6 的手册 翻译成我们的母语中文,让全世界五分之一的人口不再因为MySQL文档是英文的而蛋疼!(考虑到性别因素,可能是十分之一,:))让全世界五分之一的人口可以使用自己的母语阅读MySQL手册!

 

       我们的目标是翻译 MySQL 5.6 的手册。我们的核心是以译促学,提高自身MySQL技能。既可以为开源社区做贡献,又可以提高自身技术水平。一举多得,何乐而不为?

 

初步计划

 

道之所存,虽千万人吾往矣!我们计划翻译全部的 MySQL 5.6 的手册。鉴于MySQL手册内容较多,初步计划定为“五步走战略”。具体介绍如下:

 

  1. 翻译 MySQL 5.6版中新增的内容,提交审核;
  2. 第一步完成后,参考 MySQL 5.1 的中文版,把剩余的文档也全部翻译整理出来,提交审核;
  3. 全部的审核完成后,开源出来,接受所有热心人士的审核和修订;
  4. 开源的同时,发布出来一个完整版,方便查阅;
  5. 根据文档库的修订情况,不定时发布修改后的版本。

MySQL开发流程介绍

1. 功能开发(Feature Development)

功能开发过程如下:

  • MySQL的一个功能是指一个worklog.
  • Worklog的开发要经过规格定义,设计,架构评审,代码实现,代码评审和QA评审的过程(但是这几个过程并不是严格的按照先后顺序进行的).
  • MySQL的功能首先在一个功能树(feature tree,是指代码分支树)上实现.
  • 功能树是从MySQL的代码主开发树TRUNK上克隆出来的(一般是开发者自己创建),开发过程中不定期从TRUNK同步.
  • 当功能实现以后,必须要经过代码的评审。
  • 代码评审通过后,开发树被QA接手。
  • QA对功能进行测试,如发现缺陷(bugs),开发人员要进行修复.最终在测试通过后,QA将状态设置为开发过程完成(sign off).
  • 一旦QA验证完毕,功能就会被合并到TRUNK中.

通过这个过程,TRUNK上会不停的累积功能和缺陷修复的代码。额外的回归测试(Regression testing)一刻不停的在TRUNK上执行,以保证TRUNK始终能够保持候选发布版本(Release Candidate)的质量。