mysql数据库程序设计(oracle数据库管理工具)
大家好,今天给各位分享mysql数据库程序设计的一些知识,其中也会对oracle数据库管理工具进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
浅谈MySQL和Access数据库的区别
一篇详细讲述mysql和access区别的好文章!
MySQL∶网站开发者的新选择
「变动」这两个字对 IT业界来说是再普通不过的事了。如果今天管理阶层的主管们跟你要数据库的推荐名单,很可能在你开始执行你所推荐的方案之前,你的推荐名单上的项目就已经过时了。如此一来,你可能就要重新考虑各种软硬件方案,好让你∶
·帮你将事情完成
·买来以便帮助别人完成他们的工作
·开发以便帮助别人更好地完成他们的工作
不论你的消息有多新,在你的建议通过层层关卡,并且拿到购买资金之前,你的推荐表上的某些项目通常都会过时。幸运的是,没有人会责怪你,或者是对你反唇相讥--这是这一行里很自然的事情。数据库技术通常在你能够掌握它之前就变了。
为了适应日新月异的数据库技术,有相当多的软件工程师逐渐地从桌面数据库软件诸如 Microsoft Access以及 SQL Server,转到使用 MySQL。虽然严格说来MySQL并非 SQL Server的对手,但许多服务提供商都支持 MySQL,并视之为便宜而有效率的替代品。
Susan Sales Harkins经常在 CNET Builder.com发表文章,是一位精通微软 Office的专家。她也是Using Microsoft Access 97和Using Microsoft Access 2000两书的作者,这两本书均由 Que所出版。
Martin W. P. Reid也经常在 CNET Builder.com发表文章,是英国贝尔法斯特女王大学(Queen's University)的分析师暨程序设计员。他也指导关系型数据库设计的课程;工作之余也为北爱尔兰的一些小型企业充当数据库顾问。
▲考虑使用 MySQL的原因
如果你要找的是可靠的数据库软件,以便支持你的网站开发工作,那么以下的原因就说明了你为什么应该考虑 MySQL而不是其它数据库∶
·它便宜(通常是免费)。
·它的网络承载比较少。
·它经过很好的优化(Highly Optimized)。
·应用程序通过它做备份来比较简单。
·它为各种不同的资料格式提供有弹性的扩展介面(ODBC)。
·它较好学,且操作简单。
·你负担得起的客户支持费用。
▲关于“$”的问题
简单的说,你不会找到比 MySQL更便宜的了。事实上,对大多数用户来说,MySQL是免费的。有时候虽然是要付出一小笔的授权费,但是这个付费规定只限于以下两种情况∶
·以内嵌(embedded)的方式使用 MySQL服务器
·只使用 MySQL的商业用途软件
例如,Windows版本的 MySQL服务器,需要授权。虽然只付比美金$200元多一点点的费用,MySQL还是比其他任何数据库软件来得更便宜多了。Office XP Developer的零售价是美金$799元,升级版则是美金$549元。Access 2002的价格是美金$339元,升级版则是美金$109元。
▲避免堵塞
针对多个使用者共同读写信息的需求,Access根本不是 MySQL的对手。Access在大约十五个使用者连上来的时候,就输掉了。我们还听说过当只有五个人连上来时,就会有一些问题(这并不是说,只有五个人能够同时连上由 Access数据库支持的网站)。“同时连结”(Simultaneous connection)事实上是一种并发处理(concurrent process)。因此,虽然事实上 Access可以处理的连结数目是无限制的,但只要那些连结保持在并发处理的范围限制内就没关系。对于只读网站(这些网站并非你想像中的少数)它可以支持到最多到 255个使用者。而较大的网站,则无可避免的必须升级到 SQL Server以提高稳定性和效率。
相对说来,MySQL内定最大连结数为 100个使用者。但是,我们绝对不可以用一个程序的内建设定来判断它的效能。到目前为止,我们还没听说过使用 MySQL的较大而且访问频繁的网站上的使用者有任何抱怨。除此之外,即使有网络上有大量的资料往来,似乎并不会对MYSQL的查询优化(query optimization)造成多大的影响。
在 Windows 98操作系统上使用相同的硬件和数据尺寸,MySQL表现得比 Access 2000还要快–但只是并非所有的情况下都是如此。这两者在资料更新方面的效能,有着很大的差异,同样的资料更新,Access要花上两倍的时间。如果是在高速系统上做小量的资料的处理,你不会去注意到这两者间的差异。但只有在处理的是几十万笔资料的时候,这效能上的差异才会明显。MySQL只在处理数据库对象结构(object structure)的时候,才会输给 Access。当建立表格(table)以及索引的时候,MySqL会将表格锁住,如此一来会导致正在进行的大量资料处理速度慢下来。然而以上所提到的最后一个问题在网站开发时,通常并不会造成麻烦。因为网站上,我们所重视的是用户来访时查询的速度,而非资料储存结构本身。因此,在这个领域,MySQL胜利。
▲MYSQL其它的优点
·优化
对于 MySQL的优化,我们可以说,主要的问题在于你的硬件条件,而非 MySQL本身。不过对于 Access,(以及其他桌面数据库软件)事情就不是这样了。没错,Microsoft Jet Database的确实有效率,不过它还不是最快的。如果你的数据库设计得非常差,你的网站还是会受到影响而速度变慢的。数据库结构设计也会影响到 MySQL,例如,MySQL并不支持外键(foreign key)。这个缺点会影响到你的数据库设计以及网站的效率。对于使用 MySQL做数据库的网站,你应该注意的是,如何让硬盘存取IO减少到最低值、如何让一个或多个 CPU随时保持在高速作业的状态、以及适当的网络带宽,而非实际上的数据库设计以及资料查询语句。事实上,有些网站开发者将 MySQL称为目前市面上跑得最快的数据库。不过,当你的数据库有很多表格需要同时在一个事务过程(transaction)内完成更新的时候,MySQL的确跑得不怎么样。
·备份
如果你曾经有过抢救一个损坏的 MDB档案的惨痛经验,那么你会对 MySQL表示非常激赏。这是 MySQL另一个胜过 Access的地方。首先,mysqldump会产生一个比 Access好很多而且也更可靠的备份档案。相比之下,在 Access中你只是将一个 MDB档拷贝起来做备份。其次,即使 MySQL的备份有部分损坏,复原起来也要比一个损坏的 MDB档要容易得多了。
·可延伸性(Scalability)以及资料处理能力
套句登山者的话来说,将 Access数据库来跟 MySQL相比,简直就是像把印第安那的小山丘拿来跟科罗拉多洛矶山脉的 Pike's Peak顶相比较。事实就是这么简单∶MySQL可以处理的档案比 Access所能处理的档案大很多。如果你硬将 Access数据库弄到 100MB的 MDB档案时,你要准备好一个字典厚的纪录本来记录来自客户对于网站效率低下的抱怨。而类似的数据库在 MySQL上面跑,就不会发生承载过重的迹象。
另外,MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如 C+,Perl,Java,PHP,以及 Python。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL可用于 Unix,Windows,以及 OS/2等平台,因此它可以用在个人电脑或者是服务器上。
没错,Microsoft ActiveX Data Objects Library(ADO)的确使得 Access在外部资料市场(foreign data market)上能够做更具弹性的应用。它能够让你不用管资料的所在位置而取出资料,然后在公用的介面上(即网页浏览器)将资料显示出来。不过,其坏处是 ADO毕竟是比较笨重(它本身就是个资源大杂烩)而且学习它要花不少的金钱跟时间,就算你是一个能力不错的开发工程师或者软件工程师也一样。没有人能在一天内将 ADO学会。
▲学习曲线
如果你已经熟悉数据库技术,那么基本上你已经没什么问题了。精通数据库的人在一天之内就可以把 MySQL学会,把这个经验加到他的履历表里面去。相较之下,Access是个复杂得多的数据库及开发工具。即使是一个能力不错的开发工程师也需要一段时间才能具备足够的专业知识,有效地使用这个软件。
正如你期待的,MySQL支持结构化查询语言(Structured Query Language,SQL)。如果你已经学会某种版本的 SQL语言,事情会好办很多。具有 VB或者是 VBA知识背景的开发工程师会发现,他们以前所具备的 ASP背景,能够帮助他们缩短学习时间。
▲客户支持
虽然好用而且免费的客户支持已不存在,然而MySQL倒提供了一些电子群组名单供您参考。有一些是颇具技术性的,而且会员们往往互相提供最佳的客户支持--他们彼此分享经验和专业知识。此外,你还可以购买具有客户支持的版本,包括 email支持或者电话支持的方式。大致上来说,客户支持费率并非固定的,因此我们无法提供你相关价位的信息。
▲MySQL的不足之处
Access是一个关联性数据库管理系统(RDBMS),然而 MySQL并非在每一个层面都是如此。这表示,虽然 MySQL很好用,它还不是最好的。以下列表记录了目前关联性层面以及管理层面,MySQL尚未支持的部分:
MySQL没法处理复杂的关联性数据库功能,例如,子查询(subqueries),虽然大多数的子查询都可以改写成 join。我们期待下一版出来时,这项功能会被加进来。
另一个 MySQL没有提供支持的功能是事务处理(transaction)以及事务的提交(commit)/撤销(rollback)。一个事务指的是被当作一个单位来共同执行的一群或一套命令。如果一个事务没法完成,那么整个事务里面没有一个指令是真正执行下去的。对于必须处理线上订单的商业网站来说, MySQL没有支持这项功能,的确让人觉得很失望。但是可以用MaxSQL,一个分开的服务器,它能通过外挂的表格来支持事务功能。
外键(foreign key)以及参考完整性限制(referential integrity)可以让你制定表格中资料间的约束,然后将约束(constraint)加到你所规定的资料里面。这些MYSQL没有的功能表示一个有赖复杂的资料关系的应用程序并不适合使用 MySQL。当我们说 MySQL不支持外键时,我们指的就是数据库的参考完整性限制-- MySQL并没有支持外键的规则,当然更没有支持连锁删除(cascading delete)的功能。简短的说,如果你的工作需要使用复杂的资料关联,那你还是用原来的 Access吧。
你在 MySQL中也不会找到存储进程(stored procedure)以及触发器(trigger)。(针对这些功能,在 Access提供了相对的事件进程(event procedure)。)
Access的 GetRows功能,提供了较好的资料拾取。
什么是MySql数据库
MySQL数据库:MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
数据库简介:MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。
MySQL数据库历史:MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。有一个人叫Monty Widenius,为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内存的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。
可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。
1990年,TcX的customer中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个SQL支持。
1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。
紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关系)。
MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。
MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。
1999-2000年,有一家公司在瑞典成立了,叫MySQL AB(AB是瑞典语“股份公司”的意思)。雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎,因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。
2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。
如今,遗憾的是,BDB和InnoDB好像都被Oracle收购了,为了消灭竞争对手,哪怕是开源的,都是不择手段。
MySQL与InnoDB的正式结合版本是4.0。
到了MySQL5.0,2003年12月,开始有View,存储过程之类的东东,当然,其间, bug也挺多。
在2008年1月16号 MySQL被Sun公司收购。
最近,MySQL的创始人Monty Widenius已经向Sun提交了辞呈。head都要走了。
据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力还是很长久的。
时至今日 mysql和 php的结合绝对是完美.很多大型的网站也用到mysql数据库.mysql的发展前景是非常光明的!
MySQL常用命令:1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2:2、创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:选择你所创建的数据库
mysql> USE MYSQLDATA;(按回车键出现Database changed时说明操作成功!)
4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;
5:创建一个数据库表
mysql> CREATE TABLE MYTABLE(name VARCHAR(20), sex CHAR(1));
6:显示表的结构:
mysql> DESCRIBE MYTABLE;
7:往表中加入记录
mysql> insert into MYTABLE values(”hyq”,”M”);
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE“D:/mysql.txt” INTO TABLE MYTABLE;
9:导入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:删除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中数据
mysql>update MYTABLE set sex=”f” where name=’hyq’;
全局管理权限对应解释:
FILE:在MySQL服务器上读写文件。
PROCESS:显示或杀死属于其它用户的服务线程。
RELOAD:重载访问控制表,刷新日志等。
SHUTDOWN:关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER:修改已存在的数据表(例如增加/删除列)和索引。
CREATE:建立新的数据库或数据表。
DELETE:删除表的记录。
DROP:删除数据表或数据库。
INDEX:建立或删除索引。
INSERT:增加表的记录。
SELECT:显示/搜索表的记录。
UPDATE:修改表中已存在的记录。
特别的权限:
ALL:允许做任何事(和root一样)。
USAGE:只允许登录–其它什么也不允许做。
MySQL数据库导入方法:MySQL数据库的导入,有两种方法:
1)先导出数据库SQL脚本,再导入;
2)直接拷贝数据库目录和文件。
在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。
2.方法一 SQL脚本形式
操作步骤如下:
2.1.导出SQL脚本
在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump命令行,导出SQL脚本。
2.1.1用phpMyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
2.1.2用mysqldump命令行
命令格式
mysqldump-u用户名-p数据库名>数据库名.sql
范例:
mysqldump-u root-p abc> abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
2.2.创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
2.3.将SQL脚本导入执行
同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。
2.3.1用phpMyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。
注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。
提示输入密码时,输入该数据库用户名的密码。
3直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。
3.1准备原始文件
用tar打包为一个文件
3.2创建空数据库
3.3解压
在临时目录中解压,如:
cd/tmp
tar zxf mydb.tar.gz
3.4拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp*/var/lib/mysql/mydb/
对于FreeBSD:
cp*/var/db/mysql/mydb/
3.5权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql/var/lib/mysql/mydb/*
chmod 660/var/lib/mysql/mydb/*
Mssql转换mysql的方法:1.导表结构
使用MySQL生成create脚本的方法。找到生成要导出的脚本,按MySQL的语法修改一下到MySQL数据库中创建该表的列结构什么的。
2.导表数据
在MSSQL端使用bcp导出文本文件:
bcp“Select* FROM dbname.dbo.tablename;” queryout tablename.txt-c-Slocalhost\db2005-Usa
其中”"中是要导出的sql语句,-c指定使用\t进行字段分隔,使用
进行记录分隔,-S指定数据库服务器及实例,-U指定用户名,-P指定密码.
在MySQL端使用mysqlimport导入文本文件到相应表中
mysqlimport-uroot-p databasename/home/test/tablename.txt
其中-u指定用户名,-p指定密码,databasename指定数据库名称,表名与文件名相同
MySQL备份与恢复:MySQL备份恢复数据的一般步骤
备份一个数据库的例子:
1、备份前读锁定涉及的表
mysql>LOCK TABLES tbl1 READ,tbl1 READ,…
如果,你在mysqldump实用程序中使用--lock-tables选项则不必使用如上SQL语句。
2、导出数据库中表的结构和数据
shell>mysqldump--opt db_name>db_name.sql
3、启用新的更新日志
shell>mysqladmin flush-logs
这样可以记录你备份后的数据改变为恢复数据准备。
4、解除表的读锁
mysql>UNLOCK TABLES;
为了加速上述过程,你可以这样做:
shell> mysqldump--lock-tables--opt db_name>db_name.sql; mysqladmin flush-logs
但是这样可能会有点小问题。上命令在启用新的更新日志前就恢复表的读锁,
在更新繁忙的站点,可能有备份后的更新数据没有记录在新的日志中。
现在恢复上面备份的数据库
1、对涉及的表使用写锁
mysql>LOCK TABLES tbl1 WRITE,tbl1 WRITE,…
2、恢复备份的数据
shell>mysql db_name< db_name.sql
3、恢复更新日志的内容
shell>mysql--one-database db_name< hostname.nnn
假设需要使用的日志名字为hostname.nnn
4、启用新的更新日志
shell>mysqladmin flush-logs
5、解除表的写锁
mysql>UNLOCK TABLES;
希望上面的例子能给你启发,因为备份数据的手法多种多样,你所使用的和上面所述可能大不一样,但是对于备份和恢复中,表的锁定、启用新的更新日志的时机应该是类似的,仔细考虑这个问题。
MySQL数据库优化:选择InnoDB作为存储引擎
大型产品的数据库对于可靠性和并发性的要求较高,InnoDB作为默认的MySQL存储引擎,相对于MyISAM来说是个更佳的选择。
优化数据库结构
组织数据库的schema、表和字段以降低I/O的开销,将相关项保存在一起,并提前规划,以便随着数据量的增长,性能可以保持较高的水平。
设计数据表应尽量使其占用的空间最小化,表的主键应尽可能短。·对于InnoDB表,主键所在的列在每个辅助索引条目中都是可复制的,因此如果有很多辅助索引,那么一个短的主键可以节省大量空间。
仅创建你需要改进查询性能的索引。索引有助于检索,但是会增加插入和更新操作的执行时间。
InnoDB的ChangeBuffering特性
InnoDB提供了changebuffering的配置,可减少维护辅助索引所需的磁盘I/O。大规模的数据库可能会遇到大量的表操作和大量的I/O,以保证辅助索引保持最新。当相关页面不在缓冲池里面时,InnoDB的changebuffer将会更改缓存到辅助索引条目,从而避免因不能立即从磁盘读取页面而导致耗时的I/O操作。当页面被加载到缓冲池时,缓冲的更改将被合并,更新的页面之后会刷新到磁盘。这样做可提高性能,适用于MySQL5.5及更高版本。
InnoDB页面压缩
InnoDB支持对表进行页面级的压缩。当写入数据页的时候,会有特定的压缩算法对其进行压缩。压缩后的数据会写入磁盘,其打孔机制会释放页面末尾的空块。如果压缩失败,数据会按原样写入。表和索引都会被压缩,因为索引通常是数据库总大小中占比很大的一部分,压缩可以显著节约内存,I/O或处理时间,这样就达到了提高性能和伸缩性的目的。它还可以减少内存和磁盘之间传输的数据量。MySQL5.1及更高版本支持该功能。
注意,页面压缩并不能支持共享表空间中的表。共享表空间包括系统表空间、临时表空间和常规表空间。
使用批量数据导入
在主键上使用已排序的数据源进行批量数据的导入可加快数据插入的过程。否则,可能需要在其他行之间插入行以维护排序,这会导致磁盘I/O变高,进而影响性能,增加页的拆分。关闭自动提交的模式也是有好处的,因为它会为每个插入执行日志刷新到磁盘。在批量插入期间临时转移唯一键和外键检查也可显著降低磁盘I/O。对于新建的表,最好的做法是在批量导入后创建外键/唯一键约束。
一旦你的数据达到稳定的大小,或者增长的表增加了几十或几百兆字节,就应该考虑使用OPTIMIZETABLE语句重新组织表并压缩浪费的空间。对重新组织后的表进行全表扫描所需要的I/O会更少。
优化InnoDB磁盘I/O
增加InnoDB缓冲池大小可以让查询从缓冲池访问而不是通过磁盘I/O访问。通过调整系统变量innodb_flush_method来调整清除缓冲的指标使其达到最佳水平。
MySQL的内存分配
在为MySQL分配足够的内存之前,请考虑不同领域对MySQL的内存需求。要考虑的关键领域是:并发连接——对于大量并发连接,排序和临时表将需要大量内存。在撰写本文时,对于处理3000+并发连接的数据库,16GB到32GB的RAM是足够的。
内存碎片可以消耗大约10%或更多的内存。像innodb_buffer_pool_size、key_buffer_size、query_cache_size等缓存和缓冲区要消耗大约80%的已分配内存。
日常维护
定期检查慢的查询日志并优化查询机制以有效使用缓存来减少磁盘I/O。优化它们,以扫描最少的行数,而不是进行全表扫描。
其他可以帮助DBA检查和分析性能的日志包括:错误日志、常规查询日志、二进制日志、DDL日志(元数据日志)。
定期刷新缓存和缓冲区以降低碎片化。使用OPTIMIZETABLE语句重新组织表并压缩任何可能被浪费的空间。
Mysql数据库是可视化的程序设计软件吗
MySql不是程序设计软件,它是关系数据库管理系统。
程序设计软件与数据库管理系统具有不同的功能,一般前者用于开发应用程序的客户端,后者则作为应用程序的后台管理后台数据库,程序设计软件可以通过数据访问API如ADO等连接Mysql数据库并读写它。
Mysql数据库管理系统是非可试化的,但是市面上有很多可视化的管理工具例如MySQL GUI Tools、phpMyAdmin、Navicat、SQLyog等,利用这些可是工具我们可以很方便地管理和开发后台MySQL数据库。
关于mysql数据库程序设计到此分享完毕,希望能帮助到您。