c# pdf image preview : Convert word to editable pdf form Library software class asp.net winforms windows ajax 05-welling-php-mysql-web33-part80

297
Getting More Information About Databases
possible_keys: PRIMARY
key: NULL
key_len: NULL
ref: NULL
rows: 4
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: order_items
type: index
possible_keys: PRIMARY
key: PRIMARY
key_len: 17
ref: NULL
rows: 4
Extra: Using where; Using index
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: orders
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: books.order_items.orderid
rows: 1
Extra:
*************************** 4. row ***************************
id: 1
select_type: SIMPLE
table: customers
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: books.orders.customerid
rows: 1
Extra:
This output might look confusing at first,but it can be very useful.Let’s look at the
columns in this table one by one.
The first column,
id
,gives the ID number of the 
SELECT
statement within the query
that this row refers to.
Convert word to editable pdf form - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
can save pdf form data; convert word document to editable pdf form
Convert word to editable pdf form - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
add attachment to pdf form; adding images to pdf forms
298
Chapter 12 Advanced MySQL Administration
The column 
select_type
explains the type of query being used.The set of values
this column can have is shown in Table 12.7.
Table 12.7 Possible Select Types as Shown in Output from EXPLAIN
Type
Description
SIMPLE
Plain old 
SELECT
,as in this example
PRIMARY
Outer (first) query where subqueries and unions are used
UNION
Second or later query in a union
DEPENDENT UNION
Second or later query in a union, dependent on the primary query
SUBQUERY
Inner subquery
DEPENDENT SUBQUERY
Inner subquery,dependent on the primary query (that is, a correlat-
ed subquery)
DERIVED
Subquery used in 
FROM
clause
The column 
table
just lists the tables used to answer the query.Each row in the result
gives more information about how that particular table is used in this query. In this case,
you can see that the tables used are 
orders
,
order_items
,
customers
,and 
books
.(You
know this already by looking at the query.)
The 
type
column explains how the table is being used in joins in the query.The set
of values this column can have is shown in Table 12.8.These values are listed in order
from fastest to slowest in terms of query execution.The table gives you an idea of how
many rows need to be read from each table to execute a query.
Table 12.8 Possible Join Types as Shown in Output from EXPLAIN
Type
Description
const
or 
system
The table is read from only once.This happens when the table has
exactly one row.The type 
system
is used when it is a system table, and
the type 
const
otherwise.
eq_ref
For every set of rows from the other tables in the join, you read one
row from this table.This type is used when the join uses all the parts of
the index on the table,and the index is 
UNIQUE
or is the primary key.
ref
For every set of rows from the other tables in the join, you read a set of
table rows that all match.This type is used when the join cannot choose
a single row based on the join condition—that is,when only part of the
key is used in the join,or if it is not 
UNIQUE
or a primary key.
ref_or_null
This is like a 
ref
query, but MySQL also looks for rows that are 
NULL
.
(This type is used mostly in subqueries.)
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Create PDF files from both DOC and DOCX formats. Convert multiple pages Word to fillable and editable PDF documents.
adding a text field to a pdf; add signature field to pdf
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Convert multiple pages Word to fillable and editable PDF documents in both .NET WinForms and ASP.NET. Convert both DOC and DOCX formats to PDF files.
edit pdf form; cannot save pdf form in reader
299
Getting More Information About Databases
index_merge
A specific optimization,the Index Merge,has been used.
unique_subquery
This join type is used to replace 
ref
for some 
IN
subqueries where
one unique row is returned.
index_subquery
This join type is similar to 
unique_subquery
but is used for indexed
nonunique subqueries.
range
For every set of rows from the other tables in the join, you read a set of
table rows that fall into a particular range.
index
The entire index is scanned.
ALL
Every row in the table is scanned.
In the previous example, you can see that two of the tables are joined using 
eq_ref
(
orders
and 
customers
), one is joined using 
index
(
order_items
), and the other one
(
books
) is joined using 
ALL
—that is,by looking at every single row in the table.
The 
rows
column backs this up:It lists (roughly) the number of rows of each table
that has to be scanned to perform the join.You can multiply these numbers together to
get the total number of rows examined when a query is performed.You multiply these
numbers because a join is like a product of rows in different tables. Check out Chap-
ter 10,“Working with Your MySQL Database,”for details.Remember that this is the
number of rows examined,not the number of rows returned,and that it is only an esti-
mate;MySQL can’t know the exact number without performing the query.
Obviously,the smaller you can make this number, the better.At present,you have a
negligible amount of data in the database,but when the database starts to increase in size,
this query would increase in execution time.We return to this matter shortly.
The 
possible_keys
column lists, as you might expect, the keys that MySQL might
use to join the table.In this case, you can see that the possible keys are all 
PRIMARY
keys.
The 
key
column is either the key from the table MySQL actually used or 
NULL
if no
key was used.Notice that,although there is a possible 
PRIMARY
key for the 
books
table,it
was not used in this query.
The 
key_len
column indicates the length of the key used.You can use this number
to tell whether only part of a key was used.The key length is relevant when you have
keys that consist of more than one column.In this case,where the keys were used,the
full key was used.
The 
ref
column shows the columns used with the key to select rows from the table.
Finally,the 
Extra
column tells you any other information about the way the join was
performed.The possible values you might see in this column are shown in Table 12.9.
Table 12.8 Possible Join Types as Shown in Output from EXPLAIN
Type
Description
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
hardly edit PDF document. Under this situation, you need to convert PDF document to some easily editable files like Word document.
create a pdf form from excel; change font size in pdf fillable form
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
methods to convert target PDF document to other editable file formats using Visual C# code, such as, PDF to HTML converter assembly, PDF to Word converter
adding text fields to pdf acrobat; create a fillable pdf form from a pdf
300
Chapter 12 Advanced MySQL Administration
Table 12.9 Possible Values for Extra Column as Shown in Output from EXPLAIN
Value
Meaning
Distinct
After the first matching row is found, MySQL stops trying to 
find rows.
Not exists
The query has been optimized to use 
LEFT JOIN
.
Range checked for
For each row in the set of rows from the other tables in the
each record
join, MySQL tries to find the best index to use,if any.
Using filesort
Two passes are required to sort the data. (This operation obviously
takes twice as long.)
Using index
All information from the table comes from the index; that is, the
rows are not actually looked up.
Using temporary
A temporary table needs to be created to execute this query.
Using where
WHERE
clause is being used to select rows.
You can fix problems you spot in the output from 
EXPLAIN
in several ways. First,you
can check column types and make sure they are the same.This applies particularly to
column widths.Indexes can’t be used to match columns if they have different widths.
You can fix this problem by changing the types of columns to match or by building this
in to your design from the start.
Second,you can tell the join optimizer to examine key distributions and therefore
optimize joins more efficiently using the 
myisamchk
utility or the 
ANALYZE TABLE
state-
ment,which are equivalent.You can invoke this utility by typing
myisamchk --analyze pathtomysqldatabase/table
You can check multiple tables by listing them all on the command line or by using
myisamchk --analyze pathtomysqldatabase/*.MYI
You can check all tables in all databases by running the following:
myisamchk --analyze pathtomysqldatadirectory/*/*.MYI
Alternatively,you can list the tables in an 
ANALYZE TABLE
statement within the MySQL
monitor:
analyze table customers, orders, order_items, books;
Third,you might want to consider adding a new index to the table.If this query is a)
slow and b) common,you should seriously consider this fix.If it’s a one-off query that
you’ll never use again,such as an obscure report requested once,this technique won’t be
worth the effort because it will slow down other things.We look at how to use this
technique in the next section.
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET PowerPoint, VB.NET Tiff Convert multiple pages PowerPoint to fillable and editable PDF documents.
adding signature to pdf form; change font size in pdf form field
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
C#.NET convert PDF to text, C#.NET convert PDF to images How-to, VB.NET PDF, VB.NET Word, VB.NET Create fillable and editable PDF documents from Excel in Visual
add date to pdf form; convert pdf to editable form
301
Optimizing Your Database
Speeding Up Queries with Indexes
If the 
possible_keys
column from an 
EXPLAIN
contains some 
NULL
values,you might
be able to improve the performance of your query by adding an index to the table in
question.If the column you are using in your 
WHERE
clause is suitable for indexing,you
can create a new index for it using 
ALTER TABLE
like this:
ALTER TABLE table ADD INDEX (column);
Optimizing Your Database
In addition to using the previous query optimization tips, you can do quite a few things
to generally increase the performance of your MySQL database.
Design Optimization
Basically,you want everything in your database to be as small as possible.You can achieve
this result,in part,with a decent design that minimizes redundancy.You can also achieve
it by using the smallest possible data type for columns.You should also minimize 
NULL
s
wherever possible and make your primary key as short as possible.
Avoid variable length columns if at all possible (such as 
VARCHAR
,
TEXT
,and 
BLOB
).If
your tables have fixed-length fields,they will be faster to use but might take up a little
more space.
Permissions
In addition to using the suggestions mentioned in the previous section on 
EXPLAIN
,you
can improve the speed of queries by simplifying your permissions. Earlier,we discussed
the way that queries are checked with the permission system before being executed.The
simpler this process is,the faster your query will run.
Table Optimization
If a table has been in use for a period of time,data can become fragmented as updates
and deletions are processed.This fragmentation increases the time taken to find things in
this table.You can fix this problem by using the statement
OPTIMIZE TABLE tablename;
or by typing
myisamchk -r table
at the command prompt.
You can also use the 
myisamchk
utility to sort a table index and the data according to
that index,like this:
myisamchk --sort-index --sort-records=1 pathtomysqldatadirectory/*/*.MYI
C# Create PDF Library SDK to convert PDF from other file formats
component to create searchable PDF document from Microsoft Office Word, Excel and Create and save editable PDF with a blank page, bookmarks, links, signatures
add form fields to pdf online; change font size pdf fillable form
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
NET PDF SDK- Create PDF from Word in Visual An excellent .NET control support convert PDF to multiple Create fillable and editable PDF documents from Excel in
create pdf forms; create a pdf form
302
Chapter 12 Advanced MySQL Administration
Using Indexes
You should use indexes where required to speed up your queries. Keep them simple and
don’t create indexes that are not being used by your queries.You can check which
indexes are being used by running 
EXPLAIN
,as shown previously.
Using Default Values
Wherever possible,you should use default values for columns and insert data only if it
differs from the default.This way,you reduce the time taken to execute the 
INSERT
state-
ment.
Other Tips
You can make many other minor tweaks to improve performance in particular situations
and address particular needs.The MySQL website offers a good set of additional tips.You
can find it at http://www.mysql.com.
Backing Up Your MySQL Database
In MySQL, there are several ways to do a backup.The first way is to lock the tables
while you copy the physical files,using a 
LOCK TABLES
command with the following
syntax:
LOCK TABLES table lock_type [, table lock_type ...]
Each 
table
should be the name of a table, and the 
lock type
should be either 
READ
or
WRITE
.For a backup,you only need a read lock.You need to execute a 
FLUSH TABLES;
command to make sure any changes to your indexes have been written to disk before
performing a backup.
Users and scripts can still run read-only queries while you make your backup.If you
have a reasonable volume of queries that alter the database, such as customer orders, this
solution is not practical.
The second, and superior,method is using the 
mysql_dump
command.Usage is from
the operating system command line, and is typically something such as
mysqldump --opt --all-databases > all.sql
This command dumps a set of all the SQL required to reconstruct the database to the
file called 
all.sql
.
You should then stop the 
mysqld
process for a moment and restart it with the 
--log-bin[=logfile]
option.The updates stored in the log file give you the changes
made since your dump.(Obviously,you should back up the log files in any normal file
backup.)
A third method is using the 
mysqlhotcopy
script.You can invoke it with
mysqlhotcopy database /path/for/backup
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Convert multiple pages PowerPoint to fillable and editable PDF documents. Easy to create searchable and scanned PDF files from PowerPoint.
add image field to pdf form; changing font in pdf form
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
Convert PDF document to DOC and DOCX formats in Visual Basic .NET NET control to export Word from multiple PDF Create editable Word file online without email.
add an image to a pdf form; build pdf forms
303
Implementing Replication
You should then follow the process of starting and stopping the database as described
earlier.
A final method of backup (and failover) is to maintain a replicated copy of the data-
base.Replication is discussed later in this chapter.
Restoring Your MySQL Database
If you need to restore your MySQL database, there are, again,a couple of approaches.If
the problem is a corrupted table,you can run
myisamchk
with the 
-r
(repair) option.
If you used the first method from the preceding section for backup,you can copy the
data files back into the same locations in a new MySQL installation.
If you used the second method for backup,there are a couple of steps.First,you need
to run the queries in your dump file.This step reconstructs the database up to the point
where you dumped that file.Second,you need to update the database to the point stored
in the binary log.You can do this by running the command
mysqlbinlog hostname-bin.[0-9]* | mysql
More information about the process of MySQL backup and recovery can be found at
the MySQL website at http://www.mysql.com.
Implementing Replication
Replication is a technology that allows you to have multiple database servers serving 
the same data.This way,you can load share and improve system reliability;if one server
goes down, the others can still be queried.Once set up,it can also be used for making
backups.
The basic idea is to have a master server and add to it a number of slaves. Each of the
slaves mirrors the master.When you initially set up the slaves,you copy over a snapshot
of all the data on the master at that time.After that,slaves request updates from the mas-
ter.The master transmits details of the queries that have been executed from its binary
log, and the slaves reapply them to the data.
The usual way of using this setup is to apply write queries to the master and read
queries to the slaves.This is enforced by your application logic.More complex architec-
tures are possible,such as having multiple masters,but we will only consider the setup
for the typical example.
You need to realize that slaves usually do not have data that is as up to date as on the
master.This occurs in any distributed database.
To begin setting up a master and slave architecture,you need to make sure binary
logging is enabled on the master.Enabling binary logging is discussed in Appendix A,
“Installing PHP and MySQL.”
304
Chapter 12 Advanced MySQL Administration
You need to edit your 
my.ini
or 
my.cnf
file on both the master and slave servers.
On the master,you need the following settings:
[mysqld]
log-bin
server-id=1
The first setting turns on binary logging (so you should already have this one; if not, add
it in now).The second setting gives your master server a unique ID.Each of the slaves
also needs an ID,so you need to add a similar line to the 
my.ini
/
my.cnf
files on each of
the slaves.Make sure the numbers are unique! For example,your first slave could have
server-id=2
;the next,
server-id=3
;and so on.
Setting Up the Master
On the master,you need to create a user for slaves to connect as.There is a special privi-
lege level for slaves called replication slave.Depending on how you plan to do the initial
data transfer, you may need to temporarily grant some additional privileges.
In most cases,you will use a database snapshot to transfer the data,and in this case,
only the special replication slave privilege is needed.If you decide to use the 
LOAD DATA
FROM MASTER
command to transfer data (you learn about it in the next section), this user
will also need the 
RELOAD
,
SUPER
,and 
SELECT
privileges,but only for initial setup.As per
the principle of least privilege,discussed in Chapter 9,you should revoke these other
privileges after the system is up and running.
Create a user on the master.You can call it anything you like and give it any password
you like, but you should make a note of the username and password you choose.In our
example,we call this user 
rep_slave
:
grant replication slave
on *.*
to ‘rep_slave’@’%’ identified by ‘password’;
Obviously,you should change the password to something else.
Performing the Initial Data Transfer
You can transfer the data from master to slave in several ways.The simplest is to set up
the slaves (described in the next section) and then run a 
LOAD DATA FROM MASTER
state-
ment.The problem with this approach is that it will lock the tables on the master while
the data is being transferred,and this can take some time, so we do not recommend it.
(You can use this option only if you are using MyISAM tables.)
Generally,it is better to take a snapshot of the database at the current time.You can
do this by using the procedures described for taking backups elsewhere in this chapter.
You should first flush the tables with the following statement:
flush tables with read lock;
305
Implementing Replication
The reason for the read lock is that you need to record the place the server is up to in
its binary log when the snapshot was taken.You can do this by executing this statement:
show master status;
You should see output similar to the following from this statement:
+----------------------+----------+--------------+------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| laura-ltc-bin.000001 |       95 |              |                  |
+----------------------+----------+--------------+------------------+
Note the File and Position;you will need this information to set up the slaves.
Now take your snapshot and unlock the tables with the following statement:
unlock tables;
If you are using InnoDB tables,the easiest way is to use the InnoDB Hot Backup tool,
available from Innobase Oy at http://www.innodb.com.This is not Free Software,so
there is a license cost involved.Alternatively,you can follow the procedure described
here and,before unlocking the tables,shut down the MySQL server and copy the entire
directory for the database you want to replicate before restarting the server and unlock-
ing the tables.
Setting Up the Slave or Slaves
You have two optionsfor setting up the slave or slaves. If you have taken a snapshot of
your database,begin by installing it on the slave server.
Next, run the following queries on your slave:
change master to
master-host=’server’,
master-user=’user’,
master-password=’password’,
master-log-file=’logfile’,
master-log-pos=logpos;
start slave;
You need to fill in the data shown in italics.The 
server
is the name of the master server.
The 
user
and 
password
come from the 
GRANT
statement you ran on the master server.
The 
logfile
and 
logpos
come from the output of the 
SHOW MASTER STATUS
statement
you ran on the master server.
You should now be up and running.
If you did not take a snapshot, you can load the data from the master after running
the preceding query by executing the following statement:
load data from master;
306
Chapter 12 Advanced MySQL Administration
Further Reading
In these chapters on MySQL,we have focused on the uses and parts of the system most
relevant to web development and to linking MySQL with PHP.If you want to know
more about MySQL administration, you can visit the MySQL website at
http://www.mysql.com.
You might also want to consult the MySQL Press book MySQL Administrator’s Guide,
or Paul Dubois’book MySQL,Third Edition,available from Developer’s Library.
Next
In the next chapter,“Advanced MySQL Programming,”we look at some advanced fea-
tures of MySQL that are useful when writing web applications,such as how to use the
different storage engines,transactions,and stored procedures.
Documents you may be interested
Documents you may be interested