在MySQL中,使用auto_increment类型的id字段作为表的主键。通常的做法,是通过“selectmax(id)fromtablename”的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表以“X锁“,待获得max(id)的值以后,再解锁。这种做法需要的步骤比较多,有些麻烦,而且并发性也不好。有没有更简单的做法呢?答案之一是通过selectLAST_INSERT_ID()这个操作。乍一看,它和selectmax(id)很象,但实际上它
系统 2019-08-12 01:55:16 2497
先给出结论:int(size)中的size表示显示长度,但是只有和ZEROFILL一起使用才有意义!而varchar(size)中的size表示存储长度,而不是显示长度!下面给出验证过程:一路Google下来,无非是说size表示显示长度,而非存储长度,可问题是我用int(2)和int(8)表示的显示长度一样啊!见下图:显示宽度只有和zerofill结合使用才有意义!varchar(size)中的size表示存储长度!mysql——int(size)中的s
系统 2019-08-12 01:55:03 2497
在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作。在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象。但是当我们对数据库进行了分库分表后,就不能依赖于每个表的自增ID来全局唯一标识这些数据了。因此,我们需要提供一个全局唯一的ID号生成策略来支持分库分表的环境。下面来介绍两种非常优秀的解决方案:1.数据库自增ID--来自Flicker的解决方案因为MySQL本身支持auto_increme
系统 2019-08-12 01:32:23 2497
MySQL是一个开源的数据库系统,近些年来使用率越来越高,目前属于Oracle公司所有,其拥有MySQL的商标,属于主流版本,由于其开源特性,出现了一些分支,常见的有MariaDB、PerconaServer、Drizzle。这三个版本各有其特点。其中目前最流行的是MariaDB,很多Linux发行版默认的MySQL已经切换为MariaDB,但其他分支也有其适用范围,在选择的时候需要仔细甄别。PerconaServer由一家MySQL咨询公司拥有,这个公司
系统 2019-08-12 01:54:45 2496
一、复制机制的实现原理从高层来看,复制分成三步:(1)master将改变记录到二进制日志(binarylog)中(这些记录叫做二进制日志事件,binarylogevents);(2)slave将master的binarylogevents拷贝到它的中继日志(relaylog);(3)slave重做中继日志中的事件,将改变反映它自己的数据。二、复制实现级别1.Row日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。优点:在row
系统 2019-08-12 01:54:33 2496
原文:MySQL性能、监控与灾难恢复监控方案:up.timehttp://www.uptimesoftware.com/收费Cactihttp://www.cacti.net/KDESystemGuard(KSysGuard)http://docs.kde.org/stable/en/kdebase-workspace/ksysguard/index.htmlGnomeSystemMonitorhttp://library.gnome.org/users/
系统 2019-08-12 01:53:10 2496
今天从MYSQL数据库抓取时,发生了Cannotconvertvalue'0000-00-0000:00:00'fromcolumn10toTIMESTAMP异常google了一下,大概意思是MySQL中的Datetime值无法再JAVA中可靠的被表示,按照JDBC和SQL的标准默认情况下产生异常。JDBC允许用下列的值对zeroDateTimeBehavior属性来设置这些处理方式,exception(thedefault),whichthrowsanS
系统 2019-08-12 01:53:03 2495
在使用MYSQL的selectdistinctnamefromtable语句时,输出的只是去重之后name字段的信息,而希望的是能够输出考生ID、考试时间、考试成绩等的信息。使用selectdistinctname,sorcefromtable结果发现去重不起作用,因为MYSQL认为要sorce和name同时重复才会去除。最终解决办法如下:select*,count(distinctname)fromtablegroupbyname如果SQL语句还有lim
系统 2019-08-12 01:54:51 2494
让MySQL支持中文全文检索■杨宝昌--------------------------------------------------------------------------------因为中文词间并没有明显的区隔,所以中文的分词是按照字典、词库的匹配和词的频度统计,或是基于句法、语法分析的分词,而MySQL并不具备此功能,所以MySQL对中文全文检索的支持几乎为零。目前很多网站和系统都提供了全文搜索功能,用户可以输入词或者语句来定位匹配的记录。
系统 2019-08-29 22:54:20 2493
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。经过对MySQLinnodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。1.一条SQL语句插入多条数据。常用的插入语句如:1234INSERTINTO`insert_table`(`datetime`,`uid`,`content`
系统 2019-08-12 01:53:00 2493
来源:http://yingxiong.javaeye.com/blog/451208本文实例,运行于MySQL5.0及以上版本。MySQL赋予用户权限命令的简单格式可概括为:grant权限on数据库对象to用户一、grant普通数据用户,查询、插入、更新、删除数据库中所有表数据的权利。grantselectontestdb.*tocommon_user@'%'grantinsertontestdb.*tocommon_user@'%'grantupdat
系统 2019-08-12 01:51:35 2493
1中文问题在使用MySQL实例配置工具的使用,将使用的字符集设置为GBK2密码问题:安装时设置的密码使用phpMyAdmin访问时不能用mysql>SETPASSWORDFOR->'root'@'localhost'=OLD_PASSWORD('root');3字段严格检查的问题在实例配置工具中将EnableStrictMode去掉4phpMyAdmin乱码问题Language:Chinesesimplified(zh-utf-8)MySQL连接校对:gb
系统 2019-08-12 01:33:34 2493
[转自:linuxme.blog.51cto.com/1850814/383742]1.主从mysqlserver的工作原理:(如图及其过程分析)过程:Mysql的复制(replication)是一个异步的复制,从一个Mysqlinstace(称之为Master)复制到另一个Mysqlinstance(称之Slave)。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程),另外一个进程在Master(IO进程)上。要实施复
系统 2019-08-29 23:03:26 2492
PERCONAPERFORMANCECONFERENCE2009上,来自雅虎的几位工程师带来了一篇”EfficientPaginationUsingMySQL“的报告,有很多亮点,本文是在原文基础上的进一步延伸。首先看一下分页的基本原理:mysql>explainSELECT*FROMmessageORDERBYidDESCLIMIT10000,20\G*****************1.row**************id:1select_type:
系统 2019-08-12 01:54:48 2492
索引的类型:普通索引:这是最基本的索引类型,没唯一性之类的限制。唯一性索引:和普通索引基本相同,但所有的索引列只能出现一次,保持唯一性。主键:主键是一种唯一索引,但必须指定为"PRIMARYKEY"。全文索引:全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。索引的操作使用ALTERTABLE语句创建索引。altertabletable_nameaddindexindex_name(column_list);al
系统 2019-08-12 01:52:49 2492