摘要:当用数据库存储一个数值,并且这个数值需要被增减的时候,比如物品的数量。 在这种场景下,物品的数量是不能为负数的。那如何确保在扣减这个数量的时候,不会被扣成负数呢。 假设表数据如下: 假设现在 a 的 num 要 减少10个。 用程序在操作之前判断? num 是否足够扣减 ? 这明显是不靠谱的。因为有
阅读全文
摘要:1. 改表法。 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入MySQL后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" mysql -u root -p mysql>use
阅读全文
摘要:通过WITH来使用nolock或者readpast;两者区别为:使用with(nolock)的时候可以看到被锁的资源而使用with(readpast)则看不到被锁资源比如一张表中现有20条数据,其中有一个事务是在删除一条记录,但并没有commit此时在另外一个会话中进行COUNT(*),则:SELE...
阅读全文
摘要:首先说下,由于最新的 0.8 版还是开发版本,因此我使用的是 0.79 版,API 也许会有些不同。因为我是搭配 MySQL InnoDB 使用,所以使用其他数据库的也不能完全照搬本文。接着就从安装开始介绍吧,以 Debian/Ubuntu 为例(请确保有管理员权限):MySQLapt-get in...
阅读全文
摘要:1.错误日志记录启动、运行或停止mysqld时出现的问题。My.ini配置信息:#Enter a name for the error log file.Otherwise a default name will be used.#log-error=d:/mysql_log_err.txt2.查询日志记录建立的客户端连接和执行的语句。My.ini配置信息:#Enter a name for the query log file. Otherwise a default name will be used.#log=d:/mysql_log.txt3.更新日志记录更改数据的语句。不赞成使用该日
阅读全文
摘要:首先去mySQL官网下载页面:http://dev.mysql.com/downloads/mysql/#downloadsSelect Platform 选择 Oracle & Red Hat Linux 4 & 5分别下载以下三个文件(由于我的机器是32位,下面是32位版本的包,如果你的机器是64位的请下载64位版本):1. Red Hat & Oracle Linux 5 (x86, 32-bit), RPM PackageMySQL Server2. Red Hat & Oracle Linux 5 (x86, 32-bit), RPM PackageC
阅读全文
摘要:在使用源码安装mysql时,经常遇到错误:No curses/termcap library found 解决办法:yum install ncurses-devel 安装mysql-python时,如果报错:[html]view plaincopypymemcompat.h:10:20:error:Python.h:Nosuchfileordirectory 则需要安装:[html]view plaincopyyuminstallpython-devel 如果出现错误信息:[html]view plaincopy_mysql.c:36:23:error:my_config.h:Nosuchf
阅读全文
摘要:Syntax for /etc/my.cnf in Red Hat 9:[mysqld]log=/var/log/mysql/mysql.log #通用查询日志long_query_time=2 #慢查询时间,单位秒,默认为10秒log-slow-queries=/var/log/mysql/log-slow-queries.log#慢查询日志You must create the file manually and change owners this way:mkdir /var/log/mysqltouch /var/log/mysql/log-slow-queries.logtouch
阅读全文
摘要:MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始。有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发。可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了。用事实说话,看例子:数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id是逐渐,vtype是tinyint,vt
阅读全文
摘要:utf-8编码:?符号是全角的,而mysql编码utf8_general_ci是区分全角半角的。此时在查询前进行转换,转换函数如下:/** * 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符 * @param string $str 待转换字串 * @return string $str 处理后字串 */function make_semiangle($str) { $arr = array('0' => '0', '1' => '1', '2' =&g
阅读全文
摘要:我有个需求,需要在MYSQL下like查询另一条sql查询的结果,大概格式如下:select * from table1 where `text` like '%(select name from table2 where id =3)%';请问如何才是正确格式?谢谢正确答案已出:使用CONCAT SQL语句为:select * from table1 where `text` like CONCAT('%',(select name from table2 where id =3),'%');
阅读全文
摘要:练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是没有的,google一番发现原来是要用to_char()。 搜索到一篇英文文章《Executing Common SQL Coding Tasks Using Function Calls》(常用SQL函数调用的区别),其中列出了如:MS SQL Server、MySQL、Oracle、PostgreSQL,这几个常用数据库中的常用函数。 边翻译加自己的补充,分成几个文章共享给大家。方便以后...
阅读全文
摘要:依赖注入那些事儿http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记http://www.xiaohui.com/dev/server/20070701-discuz-mysql-cpu-100-optimize.htm
阅读全文
摘要:思维导图介绍 mysql中用的最多存储引擎就是innodb和myisam。做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对《高性能MYSQL》书中提到的myisam的理解,请大家多多指教。特点> 不支持事务 证明如下: >> 表记录:t2表的engine是myisam。 >> 操作注意:如果你在数据库进行事务操作,但是事务无法成功,你就要看你的表引擎了,看这种引擎是否支持事务。>> 下面请看innodb中的事务操作> 存储结构:数据文件(.MYD),索引文件(.MYI)和结构文件(.frm) >> 特点:可以在不
阅读全文
摘要:mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。查看当前数据库的所支持的数据库引擎以及默认数据库引擎数据库支持的引擎和默认数据库引擎代码show engines;show engines;更改方式1:修改配置文件my.ini我将my-small.ini另存为my.ini,在[mysqld]最后添加为上default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为InnoDB更改方式2:在建表的时候指定或者建完表修改Mysql代码--建表的时候指定create table mytbl( id int primary
阅读全文
摘要:一、Ubuntu下MySQL的安装在Ubuntu命令行下输入 sudo apt-get install mysql-server 即可安装mysql服务,默认在安装mysql-server时,会自动安装好mysql-client。同时安装好的mysql配置文件位置:/etc/mysql/my.cnf启动mysql的快捷图标为:/etc/init.d/mysql二、编码问题的解决查看当前MYSQL字符集[在mysql命令行模式下执行]:show variables like 'character%';更改编码:sudo vim /etc/mysql/my.cnf找到[client
阅读全文
摘要:HandlerSocket是日本人akira higuchi 写的一个MySql的插件。通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。按照作者给出的数据可以在数据全部在内存的情况下可以达到75W的QPS查询。 适用场景: Innodb引擎、按主键、unique key或索引搜索(也就是说它的SQL的where条件必须是这些);支持limit 语句、IN、INSERT/UPDATE/DELETE。 1.没有主键、unique key或索引搜索不行! 2.表必须是Innodb引擎 ...
阅读全文
摘要:关键字: update set from下面是这样一个例子:两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id, name 1 王 2 李 3 张 表b:id,ClientName 1 2 3 (MS SQL Server)语句:update bset ClientName= a.namefrom a,bwhere a.id = b.id(Oralce)语句:update bset (ClientName)=(SELECT nameFROM a WHERE b.i...
阅读全文
摘要:表列如果你的列名是数据库的保留字,在Property中用"`"声明列名[Property("`User`")]public String User{ get { return _user; } set { _user = value; }}复制代码不要使用Status做列名,它是NHibernate的保留字,否则ActiveRecord会抛异常:Ambiguous column name 'Status'可以使用枚举作为列的类型,在数据库中将创建整数类型的列对象保存到数据库的时机只有在会话Flush()或事务Commit()的时候,对象才
阅读全文
摘要:一个 多对多关系 可以转换成两个 一对多关系下面举例说明:有 学生表 与 选修课程表 多对多关系一个学生可以选择多门课程, 一门课程可以被多个学生选修.需要新增加一个 学生选修课程情况表,2个字段(学生编号, 课程编号)然后 学生表 与 学生选修课程情况表 为 一对多关系.选修课程表 与 学生选修课程情况表 为 一对多关系.
阅读全文