MySQL以速度为目标

 更新时间:2016年11月25日 16:43  点击:1918
MySQL以速度为目标
--------------------------------------------------------------------------------
MySQL和PostgreSQL都是非常著名的数据库开放源码项目,而且都有取代商用数据库系统的趋势,但两者有着不同的设计目标。一般而言,如果需要更快的速度,可以优先考虑MySQL,而如果需要一些新的特色,那可以选择PostgreSQL。
目前MySQL由MySQL AB公司维护,其最新稳定版本为3.23,支持事务处理的3.23Max版也进入了Beta测试阶段,而它的最新开发版本4.0已经进入了Alpha测试阶段。它略显不寻常的许可费用,很容易让用户对它印象深刻。它的价格随平台和安装方式的不同而改变,其Windows版本在任何情况下都不免费,而对任何Unix/Linux版本,如果用户或系统管理员自己安装是免费的,第三方安装则必须支付许可费用。
MySQL是基于C/S体系结构的网络数据库管理系统。它的设计以速度为主要目标,可以快速处理多个用户的查询请求,在处理客户端连接时的速度也非常快,很适合用做Web站点的后台数据库。相对而言,PostgreSQL的执行速度比较慢,它对每个连接都生成一个子进程,而生成子进程、建立后台服务进程的步骤减慢了它的执行速度。MySQL的服务器功能很紧凑,各种复杂的功能处理(比如XML支持)完全被放到客户端进行,这使得增加功能时不会牺牲数据库服务器的速度和可靠性。而且它已被商业内存检测程序证明不存在内存泄露,连续中断和程序崩溃的现象也很罕见,在稳定性上比PostgreSQL要强一些。
在最初的设计阶段,MySQL主要面向中等规模的数据库,也就是说,数据库的规模大约有几千万行,每个表大约100MB。随着MySQL项目的发展,它的使用领域也逐渐扩展到TB规模的大型数据库和小型的手持或嵌入式设备领域。但是在短期内,MySQL不会支持实时数据库或大规模集群数据库。虽然在其3.23版本中,它通过MyISAM表,可以使系统在理论上能够支持8000PB的表。但由于操作系统的限制,在大部分Linux系统下,它仅能处理最大为2GB或4GB的表。在3.23版本中,还加入了支持大型服务器集群的复制、InnoDB的事务表处理器、Berkerley DB事务表处理器接口、全文本搜索、MyODBC 2.5接口、MyISAM表的自动检查和修复、批量插入等新模块。
InnoDB和BDB事务表处理器的引入使MySQL中使用这些方式存储的数据表具有很好的事务处理能力。不过对于其他方式存储的表,使用原子操作维护完整性和一致性通常会损失一些性能。在完整性非常重要时,可以使用LOCK TABLES进行表锁定。从3.23.44开始,InnoDB表支持外码限制检查,不过它的使用,特别是误用外码可能会导致较严重的问题。
在Linux界享有很高声誉的MySQL数据库,以其小巧玲珑、功能强大、全免费而著称。但对于很多用户来说,有时候必须要在Windows浏览、分析其中的数据,而在Windows下,MySQL数据库文件是无法被其他程序读取的。所以有人编写了这个格式转换程序---MySQL-to-Access。它可以把MySQL格式数据库文件转换为普通Access数据库文件,方便我们在Windows下轻松编辑、浏览其中的数据了。它适用于所有操作系统版本的MySQL数据库转换。
  大家可以到http://crctimes.onlinedown.net/down/sql2accd.exe下载这一程序。

二。导库的VB程序
  这个工程要使用一些对象库,在数据库访问方面,决定使用ADO(ActiveX Data Objects),对于使用过ASP的人,这个名字应该非常熟悉了,实际上,它在VB中的应用也是几乎一样的,由于要操作Excel,还要引用一个扩展的对象库。点菜单中的“工程”---“引用”,选择“Microsoft ActiveX Data Objects 2.6 Library”和“Microsoft Excel 9.0 Object Library”,在引用列表中,可引用对象库的版本或许有所不同,选择类似的最新版本就可以了。要使用对话框和进度条,还要引用一些部件,点菜单中的“工程”--“部件”,选择“Microsoft Common Dialog Control 6.0(SP3)”和“Microsoft Windows Common Controls 6.0(SP3)”。
 
界面如图一所示

图中各数字表示的控件分别是:
1-3:3个均为TextBox控件,名字分别为mdbfilename,mdbpassword,xlsfilename,mdbfilename用来指示导入Access文件的路径和文件名,mdbpassword用来输入Access文件的密码,xlsfilename用来指示导入Excel文件的路径和文件名;
4:名称为select_mdbfile,CommandButton控件,用来选择要导入的Access文件;
5:名称为importMDB,CommandButton控件,选择好文件后,用该按钮导入MDB文件
6:名称为CommonDialog1,CommonDialog控件
7:名称为select_xlsfile,CommandButton控件,用来选择要导入的Excel文件;
8:名称为importXLS,CommandButton控件,选择好文件后,用该按钮导入XLS文件;
9:名称为CommonDialog2,CommonDialog控件
10:名称为prgBar1,进度条(ProgressBar),当要导入很多记录时,使用进度条可以指示当前的导入进度
11:名称为StatusBar1,状态条(StatusBar),指示导入的进展状态,包括“正在导入”,“导入完成”等。
 
要将Style设置为“1-sbrSimple”

在程序的头部作以下声明
Option Explicit
Dim Cn As New ADODB.Connection
Dim Cnmysql As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Rsmysql As New ADODB.Recordset

Function replace_str(srcstr As String)
srcstr = Replace(srcstr, "", "")
replace_str = Replace(srcstr, "'", "'")
End Function

双击form,在装载form时输入以下的代码
Private Sub Form_Load()
'将进度条设置为不可见
prgBar1.Visible = False
'连接mysql数据库,pwd为数据库的密码,uid为用户名,dsn为数据源的名称
Cnmysql.ConnectionString = "uid=root;pwd=;dsn=build"
Cnmysql.Open
End Sub

一。Mysql数据库的安装、建库和ODBC的安装设置
  Mysql和ODBC驱动可以在其主页(http://www.mysql.com/)下载,在右边的Latest Versions点击进去,下载相应的版本就行了。这里我们要下载Intel版本的Mysql(最新版本为3.23.40),ODBC驱动则是MyODBC 2.50.37 for NT/2000 (full setup),如果使用Win95/98,其驱动是不同的,请注意区分。
  然后就可以安装了,Mysql的安装是非常简单的,将它解压到一个目录(C:mysql),在Win2000中,Mysql可以作为Windows的一个服务运行,在命令行中运行"C:mysqlinmysqld-nt --install",然后在Win2000管理工具的服务中我们就可以发现有Mysql这个服务运行,不过我发现直接运行winmysqladmin.exe也是可以的,这时会要求输入一个密码,这是Mysql的连接密码,请记好,默认的连接是没有密码的(用户为root)。
  其后是建立数据库和表,由于要将Access和Excel中的数据都导过来,因此表格中要包括两者的全部字段,这里为简单起见,只选择了其中的一些字段来说明,运行cmd进入到命令行方式,切换到c:mysqlin目录,执行"mysqladmin create build",这个命令是创建数据库,build是数据库的名称,成功后,执行“mysql”,进入"Mysql>"的命令行方式下,执行以下的命令:
mysql>use build;
mysql>CREATE TABLE loupan (
id int(10) unsigned NOT NULL auto_increment,
loupantype varchar(6),
inputdate date,
at_whatsection varchar(6),
buildname varchar(50),
buildaddress varchar(50),
room tinyint(4),
hall tinyint(4),
areasize decimal(10,2),
exp_sellprice decimal(13,2),
ownername varchar(20),
contactway varchar(50),
memo varchar(255),
updatestatus char(1),
goodloupan char(1),
PRIMARY KEY (id)
);
  接着就会出现Query OK, 0 rows affected (0.04 sec)的成功提示,上文中use build表示切换当前的数据库为build,接着的语句是建表的命令,字段由上至下表示的是id号(自动加1,而且是该表的主键)、楼盘的类型、输入的日期、所在的区域、楼盘的名字、地址、房间的数目、厅的数目、面积、期望售价、业主的名字、联系方式、备注、更新状态、笋盘标志。
  接着就是安装Mysql的ODBC驱动了,MyODBC的安装也是傻瓜式的,运行setup,一步步确认。结束后,就可以在控制面板的ODBC数据源中进行设置了,点“系统DSN”,选择“添加”,在驱动程序的列表中选择“mysql”,就会弹出一个配置页面,在Windows DSN Name中输入数据源的名称,这里输入build(还可以输入其它的名称,不一定跟数据库的名字相同),在“MySQL host(name or IP)”中,输入“localhost”,表示Mysql运行在本机上,在Mysql Database Name中输入数据库的名字“build”,User中输入“root”,PassWord中输入刚才设置的密码,如果刚才没有设置的话,留空,按“OK”后,就会在系统数据源中多了一项“build”,这样Mysql的ODBC数据源就设置成功了。
CREATE FUNCTION ChangeBigSmall
(@ChangeMoney money)
RETURNS VarChar(100) AS
BEGIN
Declare @String1 char(20)
Declare @String2 char(30)
Declare @String4 Varchar(100)
Declare @String3 Varchar(100) --从原A值中取出的值
Declare @i int --循环变量
Declare @J Int --A的值乘以100的字符串长度
Declare @Ch1 Varchar(100) --数字的汉语读法
Declare @Ch2 Varchar(100) --数字位的汉字读法
Declare @Zero Int --用来计算连续有几个零
Declare @ReturnValue VarChar(100)
Select @ReturnValue = ''
Select @String1 = '零壹贰叁肆伍陆柒捌玖'
Select @String2 = '万仟佰拾亿仟佰拾万仟佰拾元角分'
Select @String4 = Cast(@ChangeMoney*100 as int)
select @J=len(cast((@ChangeMoney*100) as int))
Select @String2=Right(@String2,@J)
Select @i = 1
while @i<= @j Begin
Select @String3 = Substring(@String4,@i,1)
if @String3<>'0' Begin
Select @Ch1 = Substring(@String1, Cast(@String3 as Int) 1, 1)
Select @Ch2 = Substring(@String2, @i, 1)
Select @Zero = 0 --表示本位不为零
end
else Begin
If (@Zero = 0) Or (@i = @J - 9) Or (@i = @J - 5) Or (@i = @J - 1)
Select @Ch1 = '零'
Else
Select @Ch1 = ''
Select @Zero = @Zero 1 --表示本位为0

--如果转换的数值需要扩大,那么需改动以下表达式 I 的值。
Select @Ch2 = ''
If @i = @J - 10 Begin
Select @Ch2 = '亿'
Select @Zero = 0
end

If @i = @J - 6 Begin
[!--infotagslink--]

相关文章

  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • PostgreSQL TIMESTAMP类型 时间戳操作

    这篇文章主要介绍了PostgreSQL TIMESTAMP类型 时间戳操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-26
  • 详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
  • postgresql 实现多表关联删除

    这篇文章主要介绍了postgresql 实现多表关联删除操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-02
  • Postgresql 如何选择正确的关闭模式

    这篇文章主要介绍了Postgresl 如何选择正确的关闭模式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-18
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

    为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • mysql的3种分表方案

    一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
  • Vscode上使用SQL的方法

    这篇文章主要介绍了Vscode上使用SQL的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-26
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • Centos5.5中安装Mysql5.5过程分享

    这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15
  • postgresql重置序列起始值的操作

    这篇文章主要介绍了postgresql重置序列起始值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-04
  • 用VirtualBox构建MySQL测试环境

    宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Atheros AR8131 PCI-E Gigabit Ethernet Controller上网没问题。 宿主机使用无线的时候,客户机在Bridged Adapter模式下,使用可选项里唯一一个WIFI选项,Microsoft Virtual Wifi Miniport Adapter也无法上网,故弃之。...2013-09-19
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • Springboot如何使用mybatis实现拦截SQL分页

    这篇文章主要介绍了Springboot使用mybatis实现拦截SQL分页,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-19
  • 忘记MYSQL密码的6种常用解决方法总结

    首先要声明一点,大部分情况下,修改MySQL密码是需要有mysql里的root权限的...2013-09-11