铁道部新客票系统设计(2)
铁道部新客票系统设计(二) 在上一篇文章中 铁道部信客票系统设计(一) 里面,探讨了关于数据库层面的功能性需求以及非功能性的需求,在非功能性需求里面,一博主 提出了没有考虑到峰值的情况,这一点的确漏掉了,因为我们铁道部的特殊需求,在春运期间负载很大,平时可能一般,如果用考虑最大的情况,则回存在浪费的情 况,如果考虑不足,就像网络订票一样,苦逼。就好比 铁道部春运的时候,发车量大,但是如果制造大量列车,平时就空闲了,也就很亏。机器的折旧很是块的。春运期间可以考虑紧急扩容来实现,...
解决数据量的增长而不影响性能的问题(1)
分库分表的设计思路让大系统变简单 以铁路的售票系统来说明分库分表对架构的影响。 一、问题:铁路的售票系统的数据量是海量吗? 不是。因为数据量不大,真不大。 每一个车次与车次间是独立的,每车次不超过2000张票,一天发车不超过50万车次; 以预售期15天来讲,15*0.1亿张不超过1.5亿笔的热线数据,称不上海量数据的。 再加上可以按线路分库,更是不到千万级的单表容量。已经发车完成的进入归档分析。 即数据库按路线使用不同的服务器,不同的车次放在不同的表中。并发量锁真不大。 当然,如...
MySQL与SQL server触发器的区别
触发器经常用于加强数据的完整性约束和业务规则等。在MySQL与SQL操作中经常会用到,下文中国就为大家讲述MySQL与SQL的触发器的不同写法,希望对大家能够有所帮助。 触发器作用: 当在SQL、MySQL数据库中一张表中插入一条记录时,触动触发器,使同一数据库的另一张表插入相同记录。 在学习的过程中,发现两者的写法是不同的。 1、在SQL中建立两张表sql_test,sql_tem。(两张表的字段是一样的) 复制代码 代码如下: create table sql_test ( id int, name varchar(16) ) create table sql_tem ( id int, name varc...
MySql一张表更新另一张表
现在有两张表t_soft1,t_soft2,这两张表有两个相同名称的列id,softlinks,其中id为主键并且两张表的id列数据完全相同。我 现在想把t_soft2的softlinks列的数据覆盖t_soft1的数据。在MSSql我用下面的语句成功实现,但在MySql环境中用 PhpAdmin就报错,请问是什么原因? 如下: update t_soft1 set softlinks = t_soft2.softlinks from t_soft1,t_soft2 where t_soft1.id = t_soft2.id 原来语法不一样,上面这个MSSQL的写法,是在mysql里不支持的,改成如下: update t_soft1 inner join t_soft2 on t_soft1.id = t_...
拼sql与存储过程的效率比较
1.关于拼sql语句执行与直接执行存储过程的效率比较 最近对于一个旧的程序的导入进行优化,不过由于这个导入程序原来是直接在程序中使用拼SQL语句执行导入,执行时间较长,一般要十分钟左右。 1)在程序代码中拼sql语句,类似代码如下: System.Data.OleDb.OleDbCommand Command=conn.CreateCommand(); Command.CommandTimeout=0; Command.Transaction=trans; Command.CommandType=CommandType.Text; string sql=""; for(int i=0;i<IWo_Img.Count;i++) { Wo_Img=IWo_Img[i] as EMS_EDI_WO_IMG; Wo_ImgDb.Wo_No=...
MySQL锁机制详解1
MySQL的锁机制详解1 在SQL SERVER中,我们通常使用NOLOCK来进行表锁,在MYSQL中怎么使用呢,同样,在MYSQL中也有各种表、行等锁机制。下面我们详细看看: 锁机制是数据库系统区别于文件系统的一个关键特性,他可以确保用户能以一致的方式读取和修改数据。 为了保证一致性,必须有锁的介入。MySQL操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素等地方也都适用锁,从而允许对多种不同资源的并发访问。 打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那...
解决c#操作mysql数据库乱码问题
最近公司项目用c# 和mysql作为数据库,用的mysql插件是MySql.Data.dll ,在连接数据库字符串改为: string mysqlconnectionstring = “server=localhost;user id=root;password=;database=test;charset=utf8;”; 这种方式才得以解决,当然改成 string mysqlconnectionstring = “server=localhost;user id=root;password=;database=test;charset=gb2312;”; 这样也是可以解决乱码问题,但是如果不加的话就还是乱码,搞不懂呀,这里也附上插件 下载地址: MySql.Data
SQL优化 经验总结1
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: OR...
MYSQL入侵教程
1、连接到对方MYSQL 服务器 mysql -u root -h 192.168.0.1 mysql.exe 这个程序在你安装了MYSQL的的BIN目录中 2、让我们来看看服务器中有些什么数据库 mysql>show databases; MYSQL默认安装时会有MYSQL、TEST这两个数据库,如果你看到有其它的数据库那么就是用户自建的数据库。 3、让我们进入数据库 mysql>use test; 我们将会进入test数据库中 4、查看我们进入数据库中有些什么数据表 mysql>show tables; 默认的情况下,test中没有任何表的存在。 以下为关键的部分 5、在TEST数据库下创建一个新的表; mys...
MySQL导入导出大量数据出错
大家一定使用过 phpmyadmin 里面的数据库导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题: 1、数据库超过一定尺寸,比如6M 这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的 PHP.INI 里面设置临时文件/上传文件的大小限制为2M,而phpmyadmin使用了上传的方式,造成失败。 2、导出到硬盘的 .SQL 文件在导回时,经常出现由于某些单引号的问题引起失败,造成导入失败,只能用 mysql等应用程序导入了。 我的数据库已经超过10M,所以必须解决这个问题。我的思...
