数据库
文章平均质量分 77
ldb2741
坦白讲,情况就是这个样子!
展开
-
MySQL 的表级锁
在开发项目时,遇到一个问题,就是要随机读取一张表的部分记录,并update设置为不可在读,这里就有一个问题,可能多个人同时随机到相同的记录,并重复做update操作,引起数据脏读和重复操作,因此考虑给表加锁。但是采用了MyISAM,不支持事务,只能加表级锁,而且别人连读的权限都没有。下面是2个测试文件,在firefox运行test.php,在ie里运行test1.php,会发现,火狐运行后1原创 2010-01-26 15:36:00 · 1018 阅读 · 0 评论 -
InnoDB的行锁模式及加锁方法
InnoDB实现了以下两种类型的行锁。l 共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。l 排他锁(X):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。另外,为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB还有两种内部使用的意向锁(Intention Locks),这两种意向锁都是表锁。l 意向共享锁(IS):事转载 2010-02-18 15:50:00 · 2497 阅读 · 0 评论 -
mysql百万级以上查询优化
<br />1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。<br /><br />2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: <br /><br />select id from t where num is null <br /><br />可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: <br /><br />select id from原创 2010-06-22 16:38:00 · 2898 阅读 · 5 评论 -
MYSQL集群探索与实践
<br />简介 <br /> <br />MySQL集群是一种在无共享架构系统里应用内存数据库集群的技术。这种无共享的架构可以使得系统使用非常便宜的并且是最小配置的硬件。 <br />MySQL集群是一种分布式设计,目标是要达到没有任何单点故障点。因此,任何组成部分都应该拥有自己的内存和磁盘。任何共享存储方案如网络共享,网络文件系统和SAN设备是不推荐或不支持的。通过这种冗余设计,MySQL声称数据的可用度可以达到99。999%。 <br />实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成原创 2010-09-07 16:11:00 · 6335 阅读 · 3 评论 -
MySQL 严格模式 sql_mode
虽然说我们尽量在写程序的时候控制插入到数据库的数据,而不要用数据库去判断数据的对错,但是有时候为了方便还是需要数据库自身的容错能力来帮助我们达到目的的。举例说明: 创建如下数据表CREATE TABLE `book` ( `id` int(11) default NULL, `num` int(11) unsigned default NULL) ENGINE=InnoDB原创 2010-02-22 19:57:00 · 2559 阅读 · 0 评论 -
MySQL行锁深入研究
做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设id=1的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为 Select restnum from book where id =1 ; -- 如果 restnum 大于 0 ,执行 updateUpdate book set restn原创 2010-02-25 11:15:00 · 25444 阅读 · 30 评论 -
php导入400万数据到mysql
今天要做个紧急需求,算法算出了400万的数据(只包含用户nick),需要导入定制化的数据库mysql上32个数据库(icluster_1到icluster_32,根据nick的md5值求余然后分库的)表结构:CREATE TABLE `preferences` ( `nick` char(32) CHARACTER SET gbk COLLATE gbk_bin NOT原创 2012-05-07 19:11:40 · 1585 阅读 · 2 评论 -
关于流量升高导致TIME_WAIT增加,MySQL连接大量失败的问题
有个应用就是每次都会去查一个接口,接口返回用户的信息数据,从而展现不同的页面效果。大致流程如下应用APP(电信)-> memcache ->电信custom接口 ->master-db应用APP(网通)-> 网通custom接口 -> slave-db接口环境是php(cgi) + nginx,接口已经运行很久,未出过异常 应用访问custom接口,然后接口去查数据库(数原创 2012-05-09 19:46:06 · 1536 阅读 · 0 评论